2012-04-19 17 views
0

私はLecturerというマネージドBeanを持っています。講師マネージドBeanには、部門間の関係が含まれます。私はデータベースに格納されているすべての部門を表示したい。私が講師を登録するとき、私はその部署を取得する必要があります。selectOneMenu(プライムフェイス)を追加するとJSFページが機能しません

My Lecturer managed bean。私は適切なセッターメソッドとゲッターメソッドを持っています。私は説明を省略するだけです。

public class Lecturer 
{ 

    private String name; 
    private String surname; 

    private String email; 
    private String username; 
    private String password; 


    private List<Department> departments; 

    private LecturerService lecturerService; 
    private DepartmentService departmentService; 
} 

私Licturer.xhtmlファイル:

<managed-bean> 
     <managed-bean-name>Lecturer</managed-bean-name> 
     <managed-bean-class>com.studinfo.controller.Lecturer</managed-bean-class> 
     <managed-bean-scope>session</managed-bean-scope> 

     <managed-property> 
      <property-name>departmentService</property-name> 
      <property-class>com.studinfo.services.DepartmentService</property-class> 
      <value>#{DepartmentService}</value> 
     </managed-property> 

     <managed-property> 
      <property-name>lecturerService</property-name> 
      <property-class>com.studinfo.services.LecturerService</property-class> 
      <value>#{LecturerService}</value> 
     </managed-property> 
    </managed-bean> 

私はselectOneMenuタグを削除

<h:form> 
<f:view> 
<p:panelGrid columns="2"> 

<f:facet name="header">Lecturer Registration Form</f:facet> 

<h:outputLabel for="name" value="Name :" /> 
<p:inputText id="name" value="#{Lecturer.name}" label="Name" required="true" /> 

<h:outputLabel for="surname" value="Surname :" /> 
<p:inputText id="surname" value="#{Lecturer.surname}" label="Surname" required="true" /> 

<h:outputLabel for="department" value="Department :" /> 


<p:selectOneMenu value="#{Lecturer.departments}" effect="fade" editable="true" var="p" > 
<f:selectItem itemLabel="Select One" itemValue="" /> 
<f:selectItems value="#{Lecturer.departments}" var="lec" 
itemLabel="#{lec.name}" itemValue="#{lec.name}"/> 
</p:selectOneMenu> 


<h:outputLabel for="email" value="Email :" /> 
<p:inputText id="email" value="#{Lecturer.email}" label="Email" required="true" /> 

<h:outputLabel for="username" value="User Name :" /> 
<p:inputText id="username" value="#{Lecturer.username}" label="Email" required="true" /> 

<h:outputLabel for="password" value="Password :" /> 
<p:inputText id="password" value="#{Lecturer.password}" label="Password" required="true" /> 

<f:facet name="footer"> 

<p:commandButton type="submit" 
       id="lecturer" 
       action="#{Lecturer.registerLecturer}" 
       value="Register" icon="ui-icon-disk"> 

       </p:commandButton> 

</f:facet> 

</p:panelGrid> 
</f:view> 
</h:form> 

私の顔-config.xmlに。私のページは正常に動作します。

解決策についてのご意見はありますか?

文字列とDepartmentクラスの間にコンバーターを追加する必要がありますか?

答えて

3

p:selectOneMenuvalue属性は全体ではなく、リスト(これは選択部門である)1つの部門への参照を保持する必要があります。あなたは例えば、あなたの豆で、このためにフィールドを追加する必要があります。

private Department selectedDepartment 
// getter and setter 

その後、あなたにfaceletにp:selectOneMenuf:selectItemsのvalue属性を変更します。

<p:selectOneMenu value="#{Lecturer.selectedDepartment}" effect="fade" 
       editable="true" var="p" > 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItems value="#{Lecturer.departments}" var="lec" 
       itemLabel="#{lec.name}" itemValue="#{lec}"/> 
</p:selectOneMenu> 

さらにあなたがマップするために、コンバータが必要になります選択した文字列をオブジェクトに変換します。

+0

@erencan:http://www.primefaces.org/showcase/ui/selectOneMenu.jsfを見てください。(2番目の例では 'city'と' cities'を参照してください) – MartinK

+0

@MartinKはい私は見ましたそれで。私の問題はコンバータがないと思う。私はDepartmentクラスとStringの間にコンバーターを追加しようとします。 – erencan

+0

私はまた、データベースに格納されているすべての部署を表示したい。ユーザは新しい講師登録のためにそれらの1つを選択することができる。したがって、私はページ上の部門のリストを使用する必要があります。 – erencan

関連する問題