jsf – 将inputtext值作为参数传递

我想将用户输入作为参数传递给另一个页面.这是我的代码:

 <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>

这也行不通.

那么,我做错了什么?

最佳答案 你的具体问题是因为< f:param>在请求具有表单的页面时评估,而不是在提交表单时评估.因此它与初始请求保持相同的值.

具体的功能要求并不十分清楚,但具体的功能要求基本上可以通过两种方式解决:

>使用纯HTML.

<form action="word.xhtml">
    <input type="text" name="word" />
    <input type="submit" value="Ara" />
</form>

>发送重定向操作方法.

<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");
}
点赞