【发布时间】:2020-03-17 13:59:50
【问题描述】:
我正在使用 prettyfaces-3.4.2 和 primefaces-7.0,并且我想在我的 URL 中使用 bean 属性,如文档所示。
pretty-config.xml
<url-mapping id="myUrl1">
<pattern value="/#{myBean.param}" />
<view-id value="/views/myView.xhtml" />
</url-mapping>
MyBean.java
@Named(value = "myBean")
@ViewScoped
public class myBean implements Serializable {
private String param;
private String str1;
private String str2;
public void loadStr1() {
if (param.equals("new")) this.str1 = "new_value";
else this.str1 = "default_value";
}
// getters & setters
public void setParam() {
this.param = param;
loadStr1();
}
}
myView.xhtml
<h:form>
<p:inputText value="#{myBean.str1}">
<p:ajax />
</p:inputText>
<p:inputText value="#{myBean.str2}">
<p:ajax />
</p:inputText>
</h:form>
我的问题是,每次我更改我的输入值时,它会触发一个新的 ajax 请求来更新我的 bean 属性(str1 和str2),它会再次触发我的 url 参数的设置器(param ) 因为执行了一个新请求。
所以,每次发出 ajax 请求时,它都会触发我的 loadStr1,重置我的 str1 值。
ajax请求调用url参数的setter是正常行为吗?我可以阻止它吗?
【问题讨论】:
-
您的代码中还有另一个问题:stackoverflow.com/q/513832
-
@BalusC 在构建我的问题的简单类似示例时犯了一个错误。
标签: jsf primefaces prettyfaces