在以下情况中,它从不调用侦听器方法。
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ViewScoped
@ManagedBean(name="testBean")
public class TestBean implements Serializable {
private int score1;
private int score2;
private int score3;
public void resetPage(){
score1 = 35;
score2 = 35;
score3 = 35;
}
public int getScore1() {
return score1;
}
public void setScore1(int score1) {
this.score1 = score1;
}
public int getScore2() {
return score2;
}
public void setScore2(int score2) {
this.score2 = score2;
}
public int getScore3() {
return score3;
}
public void setScore3(int score3) {
this.score3 = score3;
}
}
<h:form id="requirementsForm" prependId="false">
<h:messages style="color: #FF0000; font-size: 13px; margin: 10px; white-space: nowrap;" />
<table>
<tr>
<td> Score 1: </td>
<td>
<h:inputText value="#{testBean.score1}" required="true" />
</td>
</tr>
<tr>
<td> Score 2: </td>
<td>
<h:inputText value="#{testBean.score2}" required="true" />
</td>
</tr>
<tr>
<td> Score 3: </td>
<td>
<h:inputText value="#{testBean.score3}" required="true" />
</td>
</tr>
<tr>
<td colspan="2">
<h:commandLink style="margin-left: 1px;" styleClass="submitLink">
<img src="#{request.contextPath}/circuit_images/refresh.png" />
<f:ajax execute="@this"
render="@form"
listener="#{testBean.resetPage}"/>
</h:commandLink>
</td>
</tr>
</table>
</h:form>
我知道执行的默认值是@this, 我删除了它&amp;尝试过同样的问题。 它从不调用testBean#resetPage()方法。
<f:ajax execute="@this"
render="@form"
listener="#{testBean.resetPage}"/>
当我更新execute =“@ form”时,它可以正常工作。
<f:ajax execute="@form"
render="@form"
listener="#{testBean.resetPage}"/>
表单中有一些输入字段,需要&amp;其他验证。 但是对于重置按钮,我不希望这些验证处理。
我在<h:commandLink> & <f:ajax>
上添加了immediate =“true”,但没有奏效。
我正在使用JSF 2.2&amp; Tomcat 6.0.35。
我也提到了 http://www.primefaces.org/showcase/ui/resetInput.jsf &安培; http://omnifaces.org/docs/javadoc/current/org/omnifaces/eventlistener/ResetInputAjaxActionListener.html 我无法解决这个问题。
答案 0 :(得分:-1)
将您的jsf版本降级为2.1。只有Tomcat 8支持java ee 7,而jsf 2.2是java ee 7特有的。