gpt4 book ai didi

java - JSF panelGroup - 1 个跨度?

转载 作者:行者123 更新时间:2023-11-30 07:38:17 28 4
gpt4 key购买 nike

我想使用 panelGroup 对我的输入及其标签进行分组

例如

<h:panelGroup styleClass="#{jsfServicesError.errorClass}" binding="#{jsfServicesError.myComponent}">
<h:outputLabel for="company" id="companyLabel" value="#{bundle.IDENTITY_COMPANY} * :"/>
<h:inputText id="company" label="#{bundle.IDENTITY_COMPANY}" value="#{manager.uiUser.attribute.company}" required="true" styleClass="text normal">
<f:validateLength minimum="3"/>
</h:inputText>
</h:panelGroup>

如果我在一个面板组之后放置更多其他面板组,我会得到 1 个跨度类,其中包括所有其他输入和标签。这是否按预期工作?

最佳答案

我创建了一个 SSCCE在 Tomcat 6.0.20 上使用 Mojarra 1.2_14:

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<f:view>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SO question 2057438</title>
</head>
<body>
<h:form>
<h:panelGroup styleClass="foo">
<h:outputLabel for="input1" value="label1" />
<h:inputText id="input1" />
</h:panelGroup>
<h:panelGroup styleClass="foo">
<h:outputLabel for="input2" value="label2" />
<h:inputText id="input2" />
</h:panelGroup>
<h:panelGroup styleClass="foo">
<h:outputLabel for="input3" value="label3" />
<h:inputText id="input3" />
</h:panelGroup>
</h:form>
</body>
</html>
</f:view>

输出和预期的一样:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>So question 2057438</title>
</head>
<body>
<form id="j_id_jsp_452028652_1" name="j_id_jsp_452028652_1" method="post"
action="/playground/test.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_id_jsp_452028652_1" value="j_id_jsp_452028652_1" />
<span class="foo">
<label for="j_id_jsp_452028652_1:input1"> label1</label>
<input id="j_id_jsp_452028652_1:input1" type="text" name="j_id_jsp_452028652_1:input1" />
</span>
<span class="foo">
<label for="j_id_jsp_452028652_1:input2"> label2</label>
<input id="j_id_jsp_452028652_1:input2" type="text" name="j_id_jsp_452028652_1:input2" />
</span>
<span class="foo">
<label for="j_id_jsp_452028652_1:input3"> label3</label>
<input id="j_id_jsp_452028652_1:input3" type="text" name="j_id_jsp_452028652_1:input3" />
</span>
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id1:j_id2" />
</form>
</body>
</html>

您的问题出在其他地方。也许您实际上并没有查看生成的 HTML 输出,或者您预计多个面板组会相互对齐。如果是后者,则需要添加 layout="block"h:panelGroup这样它将呈现 <div>反而。一个 HTML <div>元素默认是一个 block 元素,而 HTML <span>元素是一个内联元素。粗略地说,HTML block 元素如 <form> , <div> , <table> , <ul>等隐式地在后面添加一个换行符,以便任何下一个元素在视觉上都从一个新行开始。

如果您仍在使用 h:panelGroup 的古老 JSF 1.1 或更早版本没有 layout属性,那么您需要添加 CSS display: block到与 <span> 关联的类元素。

关于java - JSF panelGroup - 1 个跨度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057438/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com