1

我需要在不同颜色的一行上写下 jsf 2 文本。这是我的代码:

<h:panelGrid id="accessinfo_grid" columns="3">
<h:outputText id="loginid" value="#{msgs.loginId}" styleClass="label"/>
<h:outputText id="loginid_asterix" value="#{msgs.asterix}" styleClass="error_message"/>
<h:inputText  id="inputusername" disabled="true" value="#{userAccount.userName}"/>
<h:outputText id="password" value="#{msgs.passwordID}" styleClass="label"/>
<h:outputText id="passwordid_asterix" value="#{msgs.asterix}" styleClass="error_message"/>
<h:secretText  id="inputpassword" disabled="true" value="#{userAccount.password}"/>
</h:panelGrid> 

我希望输出是这样的,带有红色的 *:

Login:* edit_box
Password:* edit_box

但现在是这样的:

Login:   * edit_box
Password:* edit_box

我希望 * red 就在第一个文本之后。可能我应该尝试使用其他东西然后是 panelGrid 但我不知道什么/如何。

我是这方面的新手。

谢谢,

4

2 回答 2

4

<h:panelGrid>生成 HTML 的 a 中<table>,每个直接子 JSF 组件都将以自己的形式结束<td>。您需要将应该以相同结尾的 JSF 组件分组<td><h:panelGroup>.

<h:panelGrid id="accessinfo_grid" columns="2">
    <h:panelGroup>
        <h:outputText id="loginid" value="#{msgs.loginId}" styleClass="label"/>
        <h:outputText id="loginid_asterix" value="#{msgs.asterix}" styleClass="error_message"/>
    </h:panelGroup>
    <h:inputText id="inputusername" disabled="true" value="#{userAccount.userName}"/>

    <h:panelGroup>
        <h:outputText id="password" value="#{msgs.passwordID}" styleClass="label"/>
        <h:outputText id="passwordid_asterix" value="#{msgs.asterix}" styleClass="error_message"/>
    </h:panelGroup>
    <h:inputSecret id="inputpassword" disabled="true" value="#{userAccount.password}"/>
</h:panelGrid> 

(请注意,我用 替换了不存在h:secretTexth:inputSecret,不知道你为什么使用它)

请注意,这与 CSS无关。禁用 CSS 时,您仍然会遇到完全相同的问题。我建议暂停 JSF 并专注于阅读一些不错的 HTML 教程,以更好地了解 JSF 生成的所有工作原理(您可以通过在浏览器中打开 JSF 页面并右键单击并查看源代码来查看它)。

于 2012-07-27T13:44:52.757 回答
0

您可以使用 a<h:outputText>并通过styleClass="color-red". 例子:

<h:outputText styleClass="color-red" value="*" /> ...

然后在您的 CSS 中创建相应的类:

.color-red {
    color: #F00;
}
于 2012-07-27T13:31:33.553 回答