2011-08-07 11 views
0

selectOneMenu -listで選択されたテキストを出力する必要があります。私のコードは以下の通りです。コンポーネントを選択して表示 - Ajax

<h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;" > 
    <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" /> 
    <h:outputText value="#{carsTable[1]}" style="width:350px"/> 
</h:selectOneMenu> 

どうすればよいですか?

EDIT

このリストボックスには、私はあなたが最初のネストされた<h:outputText/>を削除する必要があり、それは本当に、その位置では意味がないと思います<datatable>

<h:body> 
    <h:form id="form1" > 
     <p:dataTable var="car" value="#{DataForm.listHotels}" widgetVar="carsTable" paginator="true" rows="10" onRowSelectComplete="carDialog.show()" emptyMessage="No hospital found with given criteria" selectionMode="single" onRowSelectUpdate="growl" style="width:1400px;font-size:13px;"> 

      <h:selectOneMenu value="#{DataForm.stationed}" id="globalFilter" onchange="carsTable.filter()" style="width:350px;font-size:13px;" > 
       <f:selectItems value="#{DataForm.listHotel}" var="user" itemValue="#{user[1]}" itemDisabled="false" itemLabel="#{user[1]}" /> 
       <h:outputText value="#{carsTable[1]}" style="width:350px"/> 
      </h:selectOneMenu> 

     </p:dataTable> 

     <f:ajax render= "@form1" > 
      <h:selectOneMenu value="#{DataForm.stationed}"> 
       <f:selectItems value="#{DataForm.listHotels}" var="item" itemValue="#{DataForm.listHotels}" itemLabel="#{DataForm.listHotels}" /> 
      </h:selectOneMenu> 
     </f:ajax> 
    </h:form> 
</h:body> 

答えて

0

以内です。また、あなたの質問とサンプルコードから、PrimeFacesがそれと何をしなければならないのかが本当に明確になるわけではありません。

選択した値を出力するには、式#{DataForm.stationed}を出力します。これは、選択した値を受け取るバインディングであるためです。

次の例は、AJAXを使用してこれを示していますが、アクションと通常のフォーム送信を使用した場合も同じように動作します。

にfacelet

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core"> 
    <h:head /> 

    <h:body> 

     <h:form id="form"> 

      <f:ajax render="form"> 
       <h:selectOneMenu value="#{selectOneMenuBean.value}"> 
        <f:selectItems value="#{selectOneMenuBean.items}" var="item" itemValue="#{item}" itemLabel="#{item}" /> 
       </h:selectOneMenu> 
      </f:ajax> 

      Selected value: #{selectOneMenuBean.value} 

     </h:form> 

    </h:body> 
</html> 

@ViewScoped 
@ManagedBean 
public class SelectOneMenuBean { 

    private List<String> items = Arrays.asList("a", "b", "c"); 
    private String value; 

    public List<String> getItems() { 
     return items; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

} 

P.S. コード例では、BeanのEL名は大文字で始まります。これは典型的な慣習には少しあります。また、あなたの名前とタイプにいくつかの注意を払うこともできます。このBeanはlistHotelという名前を返しますが、これはuserという名前の変数に割り当てられ、次に整数でインデックスされます。名前の整列(コレクション名= users、変数名user)、インデックスの代わりにプロパティ(例:user.name)を使用することをおすすめします。

+0

こんにちは、この例外はありますか? '重大度:エラーレンダリングビュー[/test.xhtml] javax.faces.FacesException:には未知のIDの'フォーム 'が含まれています - コンポーネントのコンテキストでは見つかりませんj_idt15' – Illep

+0

フォームにIDを渡す必要がありますIDでそれを参照するために 'form'を使います。この例では単純なIDです。つまり、ajaxタグから到達可能でなければなりません。与えられた例を試し、壊れるまで状況に合わせて注意深く修正してください。あるいは、ajaxタグで 'render =" @ form "'を使うこともできます。これにより、名前が気になることなく、コンポーネントがネストされたフォームが検索されます。 –

+0

私は自分の質問を少し編集して問題に多くの情報を追加しました。 'render =" @ form "' – Illep

関連する問題