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?
答案 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。类名必须以大写字母开头。