我在 Tomcat 7 上遇到 JSF 2.2、richfaces 4.3.2 的问题。我的页面被注释了ViewScoped
。我显示第一个表格。当我更改值并选择一个特定的值时,我通过 ajax 显示rich:panel
一个a4j:outputPanel
. 在这个a4j:outputPanel
和rich:panel
组件内部,我有一个h:commandButton
执行表单的人。例如,如果字段为空(或其他内容),我想检索表单的消息错误
但是当我点击时h:commandButton
,视图被重新实例化并且@postcontruct
方法被重新执行。它应该只在视图范围内执行一次,我错了吗?
我不希望视图被重新显示,我希望ajaxoutputPanel
在单击h:commandButton
内部时保持显示。(我想在h:messages
我的表单字段旁边看到...没有太多要求:-))
我读到了一些错误……例如,有没有办法在不传递给 SessionScoped 的情况下改变这种行为。
谢谢各位。
<fieldset>
<h:form>
<h:panelGrid columns="3">
<h:outputText value ="Nom de l'étude : "></h:outputText>
<h:inputText id="study_name" value="#{analyse.study_name}" size="20" required="true" label="Nom de l'étude" />
<h:message for="study_name" style="color:red" />
<h:outputText value ="Analyse : "> </h:outputText>
<h:selectOneMenu id = "analyse" value="#{analyse.analyse_type}">
<f:selectItems value="#{analyse.analyse_type2Value}" />
<f:ajax execute="analyse" render=":ajaxOutputPanelAnalyse" />
</h:selectOneMenu>
</h:panelGrid>
</h:form>
</fieldset>
<a4j:outputPanel id="ajaxOutputPanelAnalyse" layout="block" ajaxRendered="true" >
<rich:panel id="richPanelAnalyse" rendered="#{analyse.analyse_type == 'NGS' and request.isUserInRole('ROLE_ADMIN_PROFILER_NGS')}" >
<h:form id ="NGS_form" >
<h:panelGrid columns="4">
<h:outputText value ="Run # :"> </h:outputText>
<h:inputText id="run_number" value="# {analyse.run_number}" size="20" required="true" label="Run" />
<h:message for="run_number" style="color:red" />
<h:outputText></h:outputText>
</h:panelGrid>
<h:commandButton value="Submit" action="#{analyse.addAnalyse}"/>
</h:form>
</rich:panel>
</a4j:outputPanel>
在豆...
@PostConstruct
public void setFlashParam(){
System.out.println("POST CONSTRUCT MON POTE");
FacesContext facesContext = FacesContext.getCurrentInstance();
return;
}
public String addAnalyse(){
System.out.println("Kikou");
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(" - Ajout de l'analyse ?"+" pour le patient ?"+" dans l'étude "+ study_name +" -"));
return "pretty:home";
}