我使用 Pretty Faces 和 JSF 2。
我有一个 selectOneMenu 来选择一个值。然后我想将选定的值传递给带有命令按钮的第二个表单,然后再传递到另一个页面。我不想在 URL 中看到参数。
我不想要这样的网址:addpartipant.xhtml,或 addparticipant.xhtml?study_name=TEST 或 /Addparticpant/New/TEST。
我只想要这样的 URL /Addparticipant/New 但如果我这样做,我将无法检索到好的参数值,我只是检索在 bean 中为参数默认设置的值,而不是刷新页面价值。
更令人不安的是,当我更改页面中的默认值时,我有一个按钮出现。它可以工作,但看起来参数的 bean 值没有影响,仍然保持默认值。
我该怎么办?感谢您的帮助。我在ajax调用中尝试了这样的监听器来设置bean中的值参数,但它实际上不起作用?
/* 当您更改 selectOneMenu 的值以将该值作为参数添加到第二个表单时,该表单会引发 ajax 事件 */
<h:form id="studySelection_form">
<h:outputText value="Sélection de l'étude :"/>
<h:selectOneMenu id="study"
value="#{home.study_name}"
required="true"
requiredMesage="Selectionnez au moins une étude.">
<f:selectItems value="#{home.studyNameItems}"
var="c"
itemLabel="#{c.studyNameLabel}"
itemValue="#{c.studyNameValue}" />
<f:ajax execute="study"
render=":add_form"
event="change"
listener="#{home.updateStudyname}"/>
</h:selectOneMenu>
</h:form>
/* 第二种形式,其中要传递的参数是从下面形式的 move 事件的 ajax 调用中注入的 */
<h:commandButton value="Ajout"
type="button"
action="pretty:participant"
rendered="#{home.study_name ne '-----'}" >
<f:param name="theNameofTheStudy"
value="#{home.study_name}" />
</h:commandButton>
PrettyFaces 配置文件:
<url-mapping id="participant">
<pattern value="/Participant/New/" />
<view-id value="/addParticipant.xhtml" />
</url-mapping>
页面结果 addParticipant.xhtml:
<h:outputFormat value="Print : {0}, {1} ">
<f:param value="#{home.study_name}" />
<f:param value=" #{theNameofTheStudy}" />
</h:outputFormat>