1

ここでは、3 つの個別のボタンで動作する 3 つの異なる入力テキスト ボックスで JSF を使用しようとしています。

ただし、最初の 2 つのテキスト ボックスがまったく機能せず、最後のテキスト ボックスのユーザー入力テキストだけが、3 つのボタンすべてで実際に使用できることがわかっています。

誰かが私のコードの何が問題なのか教えてもらえますか? ありがとう。

            <h:panelGrid columns="1" style="padding-left:20px;" cellspacing="30">
            <h:panelGroup style="color: black; font-size:medium;" >
                <b style="color: black;">Search for species reviews</b> by name (scientific or common)<br/>
                    <p>&nbsp;&nbsp;&nbsp;&nbsp;<h:inputText id="name" size="20" value="#{searchBean.inputName}" required="false" />                                 
                    &nbsp;&nbsp;<h:commandLink action="#{searchBean.searchByName}" class="buttons">Search</h:commandLink></p>
                <h:message for="name" errorClass="errors" style="color: red;" />   
                </h:panelGroup>

                <h:panelGroup style="color: black; font-size:medium;">
                <p><b style="color: black; font-size:medium; padding-bottom:25px;">Find Species Reviews</b><br/></p>
                    &nbsp;&nbsp;&nbsp;&nbsp;<h:inputText id="searchOne" size="20" value="#{searchBean.inputName}" required="false" /> &nbsp; <h:commandLink action="#{searchBean.searchByOther}" class="buttons">Enter Species</h:commandLink>&nbsp; or &nbsp;&nbsp;<h:commandLink action="#{searchBean.reviewSearchAction}" class="buttons
">Andvanced Search</h:commandLink>
                </h:panelGroup>

                <h:panelGroup style="color: black; font-size:medium;">
                <p><b style="color: black; font-size:medium;">Find Fire Studies</b><br/></p>
                    &nbsp;&nbsp;&nbsp;&nbsp;<h:inputText id="searchTwo" size="20" value="#{searchBean.inputName}" required="false" /> &nbsp; <h:commandLink action="#{searchBean.searchByFireStudy}" class="buttons">Enter Species</h:commandLink>&nbsp; or &nbsp; <h:commandLink action="#{searchBean.fireStudySearchAction}" class="buttons">Advanced Search</h:commandLink>
                </h:panelGroup>
4

2 に答える 2

2

すべてを同じ形にすることは何も悪いことではありません。ただし、value="#{searchBean.inputName}"3 つすべてに同じものを使用しているため<h:inputText>、フォーム全体を送信すると、最後<h:inputText>の値が前の 2 つの値を上書きします。

この問題を解決するには、次のいずれかの方法を試すことができると思います。

  1. Bean のさまざまなプロパティを使用して、さまざまな入力テキストの値を保持します (つまりinputName1、1 番目<h:inputText>inputName22 番目などに使用します)。
  2. 結果を同じページにレンダリングする場合は、その属性<f:ajax>を使用して送信するものを使用し、JSF に指示できます。executeボタンは次のようになります。

    <h:inputText id="input1" value="searchBean.inputName" />
    
    <h:commandLink value="Search 1" action="#{searchBean.searchByName}" class="buttons">
        <f:ajax execute="input1" render="result" />
    </h:commandLink>
    
于 2013-04-17T23:14:47.197 に答える