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

 <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>
    
  • 在 Action 方法中发送重定向。
    <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");
    }
    
  • 关于jsf - 将输入文本值作为参数传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12868585/

    10-10 05:47