Jsf 2 JSF PrimeFaces ViewScope而不调用init()
我在使用PrimeFacesDataTable时遇到了一个问题,jsf将调用我的托管beaninit(),它将从数据库中进行搜索 在我的jsf中,用户可以执行另一个以字符串形式传递参数的搜索Jsf 2 JSF PrimeFaces ViewScope而不调用init(),jsf-2,primefaces,managed-bean,Jsf 2,Primefaces,Managed Bean,我在使用PrimeFacesDataTable时遇到了一个问题,jsf将调用我的托管beaninit(),它将从数据库中进行搜索 在我的jsf中,用户可以执行另一个以字符串形式传递参数的搜索 <p:commandButton id="btnChild" type="Submit" icon="ui-icon-plus" styleClass="action-buttons" value="Child" update=":frmSysMenu:messages dtSysMenu" ajax
<p:commandButton id="btnChild" type="Submit" icon="ui-icon-plus" styleClass="action-buttons" value="Child" update=":frmSysMenu:messages dtSysMenu" ajax="false" action="#{Controller.doParent('C')}" process="dtSysMenu" />
它将返回到第一个查询。
我还有别的办法吗
RequestScope有帮助吗?来自规范(或者其他地方,OP没有提到它)
@ViewScoped只要您在浏览器窗口/选项卡中与相同的JSF视图交互,此范围内的bean就会存在。它得到 根据HTTP请求创建,并在回发到 不同的观点。当你看到它时,它不会立即被摧毁 通过GET请求离开/关闭视图,但在 再也不是通常的方式了。JSF将bean存储在UIViewRoot#getViewMap()中 使用托管bean名称作为密钥,该密钥依次存储在 会议您需要从操作(侦听器)返回null或void 使bean保持活动状态的方法。将此范围用于更复杂的表单 使用ajax、数据表和/或多个渲染/禁用 需要在后续请求中保留其状态的属性 在同一浏览器窗口/选项卡(视图)中
在函数中,我只是将其更改为void,jsf不会再次调用init()。欢迎使用Stackoverflow!如果你已经解决了你的问题(恭喜),那么请把它作为一个答案贴出来。这有助于其他人快速发现您的问题已经解决。非常感谢!对不起,我是新来的,谢谢你的建议:D可能是
@PostConstruct
@Override
public void init(){
try {
doSearch(nodeValue,"root");
setParentNode(nodeValue);
} catch (Exception e) {
addErrorMessage(e.getMessage());
e.printStackTrace();
Messages.addGlobalError(e.getMessage());
LOG.error(e.toString(), e);
}
}