Jsf 2 单个f:viewParam无法验证ViewScope bean上的回发(ajax)请求
我正在向facelet页面传递一个请求参数,该页面在相应的Jsf 2 单个f:viewParam无法验证ViewScope bean上的回发(ajax)请求,jsf-2,richfaces,ajax4jsf,Jsf 2,Richfaces,Ajax4jsf,我正在向facelet页面传递一个请求参数,该页面在相应的preRenderViewevent/listener中处理: <ui:define name="metadata"> <f:metadata> <f:viewParam name="id" value="#{essayDetails.id}" /> <f:event type="preRenderView" listener="#{essayDetails
preRenderView
event/listener中处理:
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{essayDetails.id}" />
<f:event type="preRenderView" listener="#{essayDetails.init}"/>
</f:metadata>
</ui:define>
没有验证错误,行为符合预期。使用f:viewParam和/或preRenderView事件时我做错了什么
提前谢谢 尝试检查init()方法是否为回发:
if (!FacesContext.getCurrentInstance().isPostback()) {
//do your initilialization
}
试试这个:
<f:viewParam name="id" value="#{essayDetails.id}" required="#{not facesContext.postback}" />
已正确检查,但结果如上所述。唯一有效的方法是使用属性'required=“false'”声明'f:viewParam'。如果元数据部分中包含多个属性为“required=”true“的参数,则回发请求没有问题。
<ui:define name="metadata">
<f:metadata>
<f:viewParam name="id" value="#{essayDetails.id}" required="true" />
<f:viewParam name="v" value="#{essayDetails.v}" required="true" />
<f:event type="preRenderView" listener="#{essayDetails.init}"/>
</f:metadata>
</ui:define>
if (!FacesContext.getCurrentInstance().isPostback()) {
//do your initilialization
}
<f:viewParam name="id" value="#{essayDetails.id}" required="#{not facesContext.postback}" />