我是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);
}
}
答案 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说你需要一个表格,如果你没有按钮那么按钮仍然没有工作)