我想将用户输入作为参数传递给另一个页面。这是我的代码:
<h:form>
<h:inputText value="#{indexBean.word}"/>
<h:commandLink value="Ara" action="word.xhtml">
<f:param value="#{indexBean.word}" name="word"/>
</h:commandLink>
</h:form>
嗯,这不行。我可以在我的支持bean中读取inputtext值,但我无法将其发送到word.xhtml。
这是我尝试的另一种方法:
<h:form>
<h:inputText binding="#{indexBean.textInput}"/>
<h:commandLink value="Ara" action="word.xhtml">
<f:param value="#{indexBean.textInput.value}" name="word"/>
</h:commandLink>
</h:form>
这也行不通。
那么,我做错了什么?
答案 0 :(得分:2)
导致您的具体问题是因为在请求具有表单的页面时评估<f:param>
,而不是在提交表单时评估<form action="word.xhtml">
<input type="text" name="word" />
<input type="submit" value="Ara" />
</form>
。因此它与初始请求保持相同的值。
具体的功能要求并不十分清楚,但具体的功能要求可以通过两种方式解决:
使用纯HTML。
<h:form>
<h:inputText value="#{bean.word}" />
<h:commandButton value="Ara" action="#{bean.ara}" />
</h:form>
在操作方法中发送重定向。
public String ara() {
return "word.xhtml?faces-redirect=true&word=" + URLEncoder.encode(word, "UTF-8");
}
与
{{1}}