我有一个代码,当我尝试访问(通过 JSF 数据表,使用命令按钮)时,它给出以下错误:
我收到的错误是:
javax.el.MethodNotFoundException:/page.xhtml @66,93 action =“#{example.addToCart(p)}”:找不到方法:类managementbean.example.addToCart(javax.faces.model.ResultSetDataModel $ ResultSetMap)
这是数据表的 xhtml 代码。
<h:dataTable value="#{example.info}" var="p" summary="Product list" border="0" cellpadding="2" cellspacing="0" rowClasses="" rules="all" style="border:solid 1px" class="tablef table container">
<h:column>
<f:facet name="header">
<h:outputText value="Product name"/>
</f:facet>
<h:outputText value="#{p.itemName}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Product Description"/>
</f:facet>
<h:outputText value="#{p.itemDesc}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Product Price"/>
</f:facet>
<h:outputText value="#{p.price}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Add To Cart"/>
</f:facet>
<h:commandButton action="#{example.addToCart(p)}" value="Add Item"/>
</h:column>
</h:dataTable>
这是要访问并打印到控制台的java代码。
public void addToCart(HashMap product) {
System.out.println("This is a test: " + product.entrySet());
}
传入数据表的原始数据是一个结果集(这就是变量 p 的含义)。当使用 ResultSet 作为参数类型而不是 HashMap 时,我收到非常类似的错误消息。
我尝试了不同的参数类型,唯一有效的是一个对象,我不确定如何使用它来访问键:值。
我希望它获取信息然后将其打印到控制台。
结果是上面显示的错误。
您用错误的类型替换了参数并得到
javax.el.MethodNotFoundException:/page.xhtml @66,93 action =“#{example.addToCart(p)}”:找不到方法:类managementbean.example.addToCart(javax.faces.model.ResultSetDataModel $ ResultSetMap)
您需要将该方法的参数更改为
Map
。像这样的东西
example.addToCart((Map)p)