有没有办法在不构建整个项目的情况下运行JSF页面?

2022-09-03 00:25:08

有没有办法只运行一个页面,以便我可以看到生成的html(和css),即使它本质上是非功能性的,它也会像用户一样?独立的 JSF 页面。我想回顾一下我如何设置表单,看看它们在实际编码表单的字段之前从用户的角度来看是否有意义。我正在使用maven和netbeans,但不确定后者是否相关。


答案 1

如果您使用的是 JSF2 Facelets,那么您可以只使用纯 HTML 设计表单,并使用该属性指定应在 JSF 运行时中使用的相应 JSF 组件。例如:jsfc

<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 文档也应该提供一些见解。例如:

<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>

以及可用于指定 Facelet 合成的开始和结束(例如,包含文件或标记文件)的事实。在运行时,外部的任何内容都将被忽略,但您仍然可以在设计时放置一些 HTML,以便您可以轻松预览包含文件或标记文件应是其中一部分的完整设计。<ui:composition>

<!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运行时。


答案 2

JBoss Tools for Eclipse 在其可视化编辑器中对 JSF 标签有基本的支持。

我短暂地玩过它,但它并不完全支持我们的遗留页面,所以我把它留在那里。从空白页开始时,它可能会更好地工作。