gpt4 book ai didi

html - 指定列宽为h :panelGrid

转载 作者:可可西里 更新时间:2023-11-01 13:08:32 28 4
gpt4 key购买 nike

以前使用的是<table> JSF 中的标签形式。我注意到最好使用 panelGrid标记而不是它,因为它更易于使用且更简单。

之前,我使用了一个额外的 <td>对于 <h:message >标记并将其宽度赋予 300以防止出现消息时表单向左移动。

现在,我正在使用 width <h:panelGrid> 的属性标签,但这不是我想要的效果。

当出现任何错误消息时,整个表单向左移动,然后消息出现在每个 input text 的前面.

我用了width message 的属性标签,但效果不佳。

我是否必须返回使用 <table>而不是 <h:panedGrid>

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Facelet gg</title>
</h:head>
<h:body>
<center>
<h:form>
<h:panelGrid columns="3" width="400">
<h:outputLabel value="Username:"/>
<h:inputText id="username" value="#{loginBean.username}" required="true">
<f:validateLength maximum="30" minimum="3"/>
</h:inputText>
<h:message for="username" />
<h:commandButton value="submit" action="home"/>
</h:panelGrid>
</h:form>
</center>
</h:body>
</html>

最佳答案

这是正常行为,因为 h:panelGridwidth 属性是针对整个表而不是针对特定列的,您可以检查它的 java docs .

但是,您可以通过使用属性 columnClasses 为列定义 CSS 类来为每一列指定一个 width:

Comma-delimited list of CSS style classes that will be applied to the columns of this table. A space separated list of classes may also be specified for any individual column. If the number of elements in this list is less than the number of actual column children of the UIData, no "class" attribute is output for each column greater than the number of elements in the list. If the number of elements in the list is greater than the number of actual column children of the UIData, the elements at the posisiton in the list after the last column are ignored.

因此,在您的示例中,假设您的 css 库中有一个 style.css 文件,您可以向其中添加如下内容:

  .firstColumn {
width: 100px;
}
.secondColumn {
width: 100px;
}
.thirdColumn {
width: 300px;
}

在包含您的 css 文件后使用:

<h:outputStylesheet library="css" name="styles.css"/>

您可以在您的 h:panelGrid 中使用它,如下所示:

<h:panelGrid columns="3" columnClasses="firstColumn,secondColumn,thirdColumn ">
<h:outputLabel value="Username:"/>
<h:inputText id="username" value="#{loginBean.username}" required="true">
<f:validateLength maximum="30" minimum="3"/>
</h:inputText>
<h:message for="username" />
<h:commandButton value="submit" action="home"/>
</h:panelGrid>

关于html - 指定列宽为h :panelGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28647835/

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