【发布时间】:2012-05-17 06:22:57
【问题描述】:
有没有办法只运行一个页面,以便我可以看到生成的 html(和 css),即使它本质上是非功能性的?独立的 JSF 页面。我想回顾一下我是如何设置表单的,以在实际为表单字段编码之前从用户的角度来看它们是否有意义。我正在使用 maven 和 netbeans,但不确定后者是否相关。
【问题讨论】:
有没有办法只运行一个页面,以便我可以看到生成的 html(和 css),即使它本质上是非功能性的?独立的 JSF 页面。我想回顾一下我是如何设置表单的,以在实际为表单字段编码之前从用户的角度来看它们是否有意义。我正在使用 maven 和 netbeans,但不确定后者是否相关。
【问题讨论】:
如果您使用的是 JSF2 Facelets,那么您只需使用纯 HTML 设计表单并使用 jsfc 属性来指定应在 JSF 运行时使用的相应 JSF 组件。例如
<form jsfc="h:form">
<label jsfc="h:outputLabel" for="input1" />
<input type="text" jsfc="h:inputText" id="input1" value="#{bean.input1}" required="true" />
<span jsfc="h:message" for="input1" />
<input type="submit" jsfc="h:commandButton" value="Submit" action="#{bean.submit}" />
</form>
阅读 Facelets <ui:xxx> taglib documentation 也应该提供一些见解。例如
<span jsfc="ui:remove">
This is present during design time, but is removed during JSF runtime.
</span>
<div jsfc="ui:repeat" value="#{bean.items}" var="item">#{item}</div>
<table>
<tr jsfc="ui:repeat" value="#{bean.items}" var="item">
<td>#{item.id}</td>
<td>#{item.name}</td>
</tr>
</table>
而且您可以使用<ui:composition> 来指定 Facelet 组合(例如包含文件或标记文件)的开始和结束。运行时外部的任何内容都将被忽略,但您仍然可以在设计时放置一些 HTML,以便您可以轻松预览包含文件或标记文件的完整设计。
<!DOCTYPE html>
<html lang="en"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<head>
...
</head>
<body>
...
<ui:composition>
Here you can design content of include file or
tag file as if it's part of the whole design.
</ui:composition>
...
</body>
</html>
这一切都允许您预览 HTML/CSS 设计,而无需 JSF 运行时。
【讨论】:
<ui:include> 或<my:customtag>,则<ui:composition> 之外的任何内容都将在Facelets 编译期间被忽略。您可以将 HTML 设计“线框”保留在那里。
JBoss Tools for Eclipse 在其可视化编辑器中基本支持 JSF-tags。
我用它玩了一会儿,但它不完全支持我们的旧页面,所以我把它留在那里。从空白页开始可能会更好。
【讨论】:
如果不部署已构建的应用程序,您将无法直接执行 JSF 页面。您必须部署它,然后才能显示已执行的页面。
【讨论】: