Я работаю над аннотацией ViewScoped в jsf, но не получаю правильный вывод - PullRequest
0 голосов
/ 18 марта 2019

Я работаю над аннотацией @ViewScoped в JSF2.0. Ниже приведен код, который я написал. Это не работает, как я ожидал. Пожалуйста, просмотрите его и дайте мне знать, если какие-либо изменения необходимы, чтобы получить точный вывод, о котором я думаю.

Вот мой контроллер SearchController.java

package com.s2tech.jsfapp.controllers;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import com.s2tech.jsfapp.helper.SearchHelper;
import com.s2tech.jsfapp.managedbean.SearchManagedBean;

@ManagedBean(name ="searchController")
@ViewScoped
public class SearchController  implements Serializable{
    public SearchController(){

    private static final long serialVersionUID = 1L;
     SearchHelper searchHelper;

    private List<SearchManagedBean> employeeList=new ArrayList<SearchManagedBean>();

    public List<SearchManagedBean> getEmployeeList() {
        return employeeList;
    }

    public void setEmployeeList(List<SearchManagedBean> employeeList) {
        this.employeeList = employeeList;
    }


    public void  getEmployee(SearchManagedBean searchManagedBean) {
       searchHelper=new SearchHelper();

         employeeList = searchHelper.getEmployee(searchManagedBean);

         //return "search.xhtml";

    //return Constants.searchPage;

    //   return null;
            }

Ниже мой взгляд search.xhtml

<h:body style="background-color:skyblue;">
<ui:include src="mainMenu.xhtml"></ui:include>
<h:form prependId="false">   

   <table>

   <tr style="display:block;margin-top:10px;width:100%;margin-left:40%">

   <td style="width:40%">

           <p:outputLabel for="firstName" value="First Name:" style="font-weight:bold" />

        <p:inputText id="firstName" value="#{searchManagedBean.firstName}"  required="true" requiredMessage="please enter First Name"> </p:inputText>
        <p:message id="firstNameMsg" for="firstName" showDetail="true"  ></p:message>

    </td>  
    <td style="width: 20%"></td>  
        <td style="width:40%;">
        <p:outputLabel for="lastName" value="Last Name:" style="font-weight:bold"/>
        <p:inputText id="lastName" value="#{searchManagedBean.lastName}" required="true" requiredMessage="please enter Last Name" />
         <p:message id="lastNameMsg" for="lastName" showDetail="true"  ></p:message>
        </td> 
            </tr>
    <tr style="display:block;margin-top:10px;width:100%;margin-left:78%">
    <td  style="width:40%">  <p:commandButton value="Search" action="#{searchController.getEmployee(searchManagedBean)}" update="firstNameMsg lastNameMsg emailMsg phoneMsg dataTable"/></td>
                </tr>
         </table>

</h:form>

<p:dataTable id="dataTable" var="emp" rendered="#{not empty searchController.employeeList}" value="#{searchController.employeeList}" rowStyleClass="table table-striped table-hover table-bordered" resizableColumns="true" resizeMode="expand" scrollWidth="50%" scrollHeight="150" >
    <p:column headerText="First Name">
        <h:outputText value="#{emp.firstName}"/>
    </p:column>

    <p:column headerText="Last Name">
        <h:outputText value="#{emp.lastName}"/>
    </p:column>

    <p:column headerText="Email">
        <h:outputText value="#{emp.email}"/>
    </p:column>

    <p:column headerText="Phone">
        <h:outputText value="#{emp.phone}"/>
    </p:column>

     <p:column headerText="Edit">
       <p:commandLink value="Edit" action="#{searchController.getEditForm(emp)}"  style="margin-left:40px;color:blue;"></p:commandLink>

    </p:column>


</p:dataTable>


</h:body>  

</html>  

Мой вопрос заключается в том, что после ввода имени и фамилии, когда я нажимаю кнопку отправки, необходимо нажать на метод контроллера getEmployee (), и он должен отображать значения таблицы данных из контроллера getEmployeeList (). Здесь даже при использовании ViewScoped bean Iam не получается вывод. Любые предложения ??

...