<h:commandbutton> action属性在JSF 1.2中不起作用</h:commandbutton>

时间:2013-04-11 03:17:38

标签: java jsp jsf jsf-1.2

我正在为我的应用程序使用JSF 1.2。

在下面的代码中,Account Details按钮的action属性不起作用,即没有调用该方法,单击按钮时没有任何反应。

<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 fie中的托管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> 

我可能在代码中遗漏了一些愚蠢但却无法解决的问题,浪费了很多时间,因此想到了发布。指针很有意思。

2 个答案:

答案 0 :(得分:3)

我没有看到您拥有的整个标记,但它可能只是您网页中某个地方缺少的<form>标记吗? MyFaces Trinidad中的AFAIK,表单控件和按钮除非位于<tr:form>标记内,否则不执行任何操作。

希望能解决你的问题。

答案 1 :(得分:0)

如果在

中粘贴代码
<h:form>

仍然无法解决您的问题,然后尝试使用

<a4j:JsFunction>

它将解决您的JSF 1.2问题

<h:form>
<h:commandbutton onclick = "clickme()" />
<a4j:JsFunction name = "clickme" action = "#{yourBean.YourMethod}"  /> 
</h:form>