4

ユーザー入力をパラメーターとして別のページに渡したい。これが私のコードです:

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

これも機能していません。

それで、私は何を間違っていますか?

4

1 に答える 1

2

<f:param>フォームが送信されたときではなく、フォームのあるページが要求されたときに が評価されるため、具体的な問題が発生します。そのため、最初のリクエストと同じ値のままです。

具体的な機能要件は明確ではありませんが、特定の機能要件は基本的に次の 2 つの方法で解決できます。

  1. プレーンな HTML を使用します。

    <form action="word.xhtml">
        <input type="text" name="word" />
        <input type="submit" value="Ara" />
    </form>
    
  2. アクション メソッドでリダイレクトを送信します。

    <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");
    }
    
于 2012-10-13T00:48:28.173 に答える