p:commandButton无法正常工作或未被调用

时间:2017-06-20 16:15:29

标签: jsf primefaces jsf-2 managed-bean

我是jsf网络应用中的新手, 我用一个commandButton创建一个jsf页面, 但它不起作用我不知道为什么? 我给动作侦测器,但是它不起作用, 所以请帮帮我?

html代码

 <p:panelGrid columns="2" id="display" columnClasses="label,value">

            <h:outputText value="Mobile Number" />
            <p:inputMask id="phoneWithExt" value="#{GenerateOtp.EVD}"    mask="(999) 999-9999" maxlength="10"/>

            <h:outputText value="Mpin" />
            <p:inputMask id="mpin" value="#{GenerateOtp.MPin}" mask="9-9-9-9" maxlength="4"/>

            <h:outputText value="Imei Number" />
            <p:inputText id="imei" alt="Imei Number" value="#{GenerateOtp.IMEI}"/>

            <h:outputText value="User Agent" />
            <p:inputText id="useragent" alt="User Agent" value="#{GenerateOtp.useragent}"/>

        </p:panelGrid>

        <p:commandButton id="call" type="button" value="Call"  
                         actionListener="#{GenerateOtp.buttonAction(actionEvent)}"  
                         process="@this"
                         icon="ui-icon-check"  />

托管bean:

@ManagedBean(name = "GenerateOtp")
@ViewScoped
public class GenerateOtp extends MasterRequest {

@SerializedName("EVD")
@Expose
private String eVD;
@SerializedName("mPin")
@Expose
private String mPin;

public String getEVD() {
    return eVD;
}

public void setEVD(String eVD) {
    this.eVD = eVD;
}

public String getMPin() {
    return mPin;
}

public void setMPin(String mPin) {
    this.mPin = mPin;
}

public void callOtp() {
    System.out.println("evd" + getEVD());
}

public void buttonAction(ActionEvent actionEvent) {
    addMessage("evd" + getEVD());
}

public void addMessage(String summary) {
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
    FacesContext.getCurrentInstance().addMessage(null, message);
}

 }

1 个答案:

答案 0 :(得分:1)

actionListener不适用于类型=&#34;按钮&#34;命令按钮。因此,您需要删除type =&#34;按钮&#34;。

您需要的类型是&#34;提交&#34;但由于它是默认类型,因此您不需要声明它。

<p:commandButton id="call" value="Call" 
   actionListener="# GenerateOtp.buttonAction(actionEvent)}" 
   process="@this" icon="ui-icon-check"  />

如果你改变这个按钮就行了,如果你的代码的其余部分是正确的(例如BrunoDM说你需要一个表格,如果你没有按钮那么按钮仍然没有工作)