我的应用程序使用JSF 1.2。
在下面的代码中,Account Details
按钮的动作属性不工作,即方法没有被调用,当我点击按钮时什么也没有发生。
<h:panelGrid columns="2">
<h:outputLabel id="lblCustomerDetails" value="Details of CustomerId: "></h:outputLabel>
<h:outputText id="txtCustomerId" value="#{customerInfo.customerId }"></h:outputText>
<h:outputLabel id="lblCustomerName" value="Customer name: "></h:outputLabel>
<h:outputText id="txtCustomerName" value="#{customerInfo.customerNAme }"></h:outputText>
<h:outputLabel id="lblAccounts" value="Accounts: "></h:outputLabel>
<h:selectOneMenu id="drpdownAccounts">
<f:selectItems value="#{customerInfo.accounts }"/>
</h:selectOneMenu>
<h:outputLabel id="lblEmail" value="Email: "></h:outputLabel>
<h:outputText id="txtEmail" value="#{customerInfo.email }"></h:outputText>
<h:outputLabel id="lblAccountDetails" value="Select an account no. for details"></h:outputLabel>
<h:commandButton id="btnAcountDetails" value="Account Details" action="#{accountBean.accountDetails }"></h:commandButton>
<h:messages></h:messages>
</h:panelGrid>
下面是AccountBean
:
public class AccountBean {
private int accountNo;
private String customerName;
private double accountBalance;
private String accountType;
//Getters and setters
public String accountDetails(){
//Some logic and return
return "success";
}
}
这是faces-config文件中存在的托管bean:
<managed-bean>
<managed-bean-name>customerInfo</managed-bean-name>
<managed-bean-class>com.bean.CustomerInfo</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>accountBean</managed-bean-name>
<managed-bean-class>com.bean.AccountBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
可能有一些愚蠢的东西我在代码中失踪,但无法找出它,浪费了很多时间,因此想到张贴。
我没有看到你的整个标记,但它可能只是一个缺失的<form>
标签在你的页面的某个地方?我敢说,在MyFaces特立尼达,表单控件和按钮不做任何事情,除非他们在<tr:form>
标签。
希望这能解决你的问题
如果将代码粘贴到
<h:form>
如果你仍然不能解决你的问题,那么尝试使用
<a4j:JsFunction>
它将解决JSF 1.2的问题
<h:form>
<h:commandbutton onclick = "clickme()" />
<a4j:JsFunction name = "clickme" action = "#{yourBean.YourMethod}" />
</h:form>