Я столкнулся с проблемой, используя Primefaces dataTable, которая заключается в том, что jsf вызывает мой управляемый компонент init(), который выполняет поиск в базе данных.
В моем jsf пользователь может выполнить другой поиск, который передает аргумент в String.
<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" />
мой управляемый компонент может выполнить doParent(String) и снова вернется к экрану поиска, но как только мой экран загрузится, он вызовет init(), который:
@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);
}
}
и он вернется к первому запросу. есть ли другой способ, который я могу сделать?
Помогает ли RequestScoped?