如何将来自servlet(request.setAttribute(“studentProfile”,allProfile))的数据传递给JSF

时间:2013-10-22 02:51:04

标签: jsf

JSF代码

<h:dataTable value="#{requestScope.allProfile}" var="allProfile">
<h:column>                  
<f:facet name="header">StudentID</f:facet>          
<h:inputText value="#{allProfile.studentId}"
size="10" rendered="#{allProfile.canEdit}" />
<h:outputText value="#{allProfile.studentId}"
rendered="#{not allProfile.canEdit}" />
</h:column>`

的Servlet

private void doProcess(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException, Exception {
    StudentManager stuManager = new StudentManager(); 
    List<studto>allProfile = stuManager.getAllstudentProfile();
    request.setAttribute("studentProfile", allProfile);
    RequestDispatcher rd = request.getRequestDispatcher("/ViewPage.xhtml");
    rd.forward(request, response);
}

我已经能够将数据从数据库带到servlet。但是我无法在xhtml页面中获取数据。我是否需要创建faces-config来编写托管bean?

1 个答案:

答案 0 :(得分:0)

servlet对于为JSF表单准备表单数据的工作来说是完全错误的工具。你应该只是在与JSF表单关联的JSF支持bean的(post)构造函数中完成工作,就像在每个理智的JSF教程中演示的那样。

E.g。

<h:dataTable value="#{bean.allProfile}" var="allProfile">
    <h:column>
        <f:facet name="header">StudentID</f:facet>          
        <h:inputText value="#{allProfile.studentId}"
            size="10" rendered="#{allProfile.canEdit}" />
        <h:outputText value="#{allProfile.studentId}"
            rendered="#{not allProfile.canEdit}" />
    </h:column>

使用这个支持bean:

@ManagedBean
@RequestScoped
public class Bean {

    private List<studto> allProfile;

    @PostConstruct
    public void init() {
        allProfile = new StudentManager().getAllstudentProfile();
    }

    public List<studto> getAllProfile() {
        return allProfile;
    }

}

现在只需在浏览器的地址栏中按/ViewPage.xhtml打开该页面(假设您FacesServlet已映射到<url-pattern> *.xhtml的值{。}}。

顺便说一下,我会处理你的Java naming conventions。类名必须以大写字母开头。