【发布时间】:2013-02-12 13:11:27
【问题描述】:
在使用 JSF 1.2 期间,一页代码太大,JDeveloper 给出了服务方法中的代码太大异常。现在我想将我的 JSF 文件拆分为更小的文件。在拆分过程中,我需要一些帮助和建议。
因为整个页面都绑定一个bean,是不是也需要拆分bean?如果没有,那么如何克服呢?拆分 JSF 文件并包含在主页中的最佳方法是什么?
【问题讨论】:
在使用 JSF 1.2 期间,一页代码太大,JDeveloper 给出了服务方法中的代码太大异常。现在我想将我的 JSF 文件拆分为更小的文件。在拆分过程中,我需要一些帮助和建议。
因为整个页面都绑定一个bean,是不是也需要拆分bean?如果没有,那么如何克服呢?拆分 JSF 文件并包含在主页中的最佳方法是什么?
【问题讨论】:
您不需要拆分 bean。您可以将页面片段拆分为多个文件,这些文件由<jsp:include> 包含(而不是@include,因为在编译时会发生这种情况,最终仍然会出现相同的异常!)。请注意,您应该将这些包含文件存储在/WEB-INF 文件夹中,以防止最终用户直接访问。
因此,鉴于这个“超大”页面的示例,
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div>
large chunk 1
</div>
<div>
large chunk 2
</div>
<div>
large chunk 3
</div>
</body>
</html>
您可以在保留 bean 的同时将其拆分如下:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<jsp:include page="/WEB-INF/includes/include1.jsp" />
<jsp:include page="/WEB-INF/includes/include2.jsp" />
<jsp:include page="/WEB-INF/includes/include3.jsp" />
</body>
</html>
和/WEB-INF/includes/include1.jsp:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<div>
large chunk 1
</div>
和/WEB-INF/includes/include2.jsp:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<div>
large chunk 2
</div>
和/WEB-INF/includes/include3.jsp:
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<div>
large chunk 3
</div>
【讨论】: