簡體   English   中英

當我添加selectOneMenu(素面)時,JSF頁面不起作用

[英]JSF page doesnot work when i add selectOneMenu (prime faces)

我有一個稱為講師的托管bean。 講師管理的bean包括部門之間的關系。 我想顯示存儲在數據庫中的所有部門。 當我注冊一名講師時,我需要任命其部門。

我的講師管理的bean。 我有適當的setter和getter方法。 我只是為了澄清而忽略了它。

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文件:

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

我的faces-config.xml

<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標簽。 我的頁面正常工作。

關於解決方案有什么想法嗎?

我必須在字符串和Department類之間添加一個轉換器嗎?

p:selectOneMenuvalue屬性應該保存對單個部門(這是選定部門)的引用,而不是整個列表的引用。 您需要為此在bean中添加一個字段,例如:

private Department selectedDepartment
// getter and setter

然后在您的方面更改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>

此外,您將需要一個轉換器將選定的字符串映射到對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM