阻止 Ajax 刷新 URL 参数
Prevent Ajax refresh of URL parameters
我将 prettyfaces-3.4.2
与 primefaces-7.0
一起使用,并且我想在我的 URL 中使用 bean 属性,如文档所示。
漂亮-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
) 的 setter 因为执行了新请求。
因此,每次发出 ajax 请求时它都会触发我的 loadStr1
,重置我的 str1
值。
ajax 请求调用 url 参数的 setter 是正常行为吗?我可以阻止它吗?
PrettyFaces onPostBack
<action>
的参数似乎可以完成工作。
<url-mapping id="myUrl1">
<pattern value="/#{myBean.param}" />
<view-id value="/views/myView.xhtml" />
<action onPostback="false">#{myBean.loadStr1}</action>
</url-mapping>
然后我只是从 MyBean
中删除 loadStr1
的调用。
public void setParam() {
this.param = param;
/*loadStr1();*/
}
我将 prettyfaces-3.4.2
与 primefaces-7.0
一起使用,并且我想在我的 URL 中使用 bean 属性,如文档所示。
漂亮-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
) 的 setter 因为执行了新请求。
因此,每次发出 ajax 请求时它都会触发我的 loadStr1
,重置我的 str1
值。
ajax 请求调用 url 参数的 setter 是正常行为吗?我可以阻止它吗?
PrettyFaces onPostBack
<action>
的参数似乎可以完成工作。
<url-mapping id="myUrl1">
<pattern value="/#{myBean.param}" />
<view-id value="/views/myView.xhtml" />
<action onPostback="false">#{myBean.loadStr1}</action>
</url-mapping>
然后我只是从 MyBean
中删除 loadStr1
的调用。
public void setParam() {
this.param = param;
/*loadStr1();*/
}