Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在p:selectOneRadio上使用长文本时,标签不对齐

在p:selectOneRadio上使用长文本时,标签不对齐
EN

Stack Overflow用户
提问于 2020-04-08 15:51:10
回答 2查看 193关注 0票数 4

我正在尝试使用JSF和primefaces实现一个简单的接口。我需要一个问题列表,对于每个问题,用户将能够在不同的选项之间进行选择。这些选项很长,我对单选按钮的对齐有问题。

其中一个问题的代码如下:

代码语言:javascript
运行
AI代码解释
复制
<?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://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>
<h:body>
    <h:form>
        <div class="ui-g">
            <div class="ui-g-1"></div>
            <div class="ui-g-10">
                <p:panelGrid columns="1" layout="grid"
                    styleClass="showcase-text-align-center">
                    <h2>Domanda 1</h2>
                    <p:selectOneRadio id="domanda1" layout="pageDirection">
                        <f:selectItem itemLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " itemValue="1" />
                        <f:selectItem itemLabel="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." itemValue="2" />
                        <f:selectItem itemLabel="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." itemValue="3" />
                        <f:selectItem itemLabel="Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium" itemValue="4" />
                    </p:selectOneRadio>
                </p:panelGrid>
            </div>
        </div>
    </h:form>
</h:body>
</html>

我得到的输出如下:

正如您所看到的,我有一个与最后一个单选按钮相关联的标签,它并没有与所有其他单选按钮对齐。有没有办法解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-28 11:51:00

关键是在css样式中更改显示的initial:

代码语言:javascript
运行
AI代码解释
复制
body .ui-selectmanycheckbox.ui-widget label, body .ui-selectoneradio.ui-widget label {
    display: initial;
    vertical-align: middle;
    margin-top: 0;
}
票数 1
EN

Stack Overflow用户

发布于 2020-04-08 18:07:48

您可以覆盖Primefaces样式来实现这一点(查看这里的How do I override default PrimeFaces CSS with custom styles?以获得完整的描述):

代码语言:javascript
运行
AI代码解释
复制
<?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://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
<style>
.ui-selectmanycheckbox.ui-widget td, .ui-selectoneradio.ui-widget td {
    display: flex;
}

.ui-selectoneradio label {
    word-break: break-all;
}
</style>
</h:head>
<h:body>
    <h:form>
        <div class="ui-g">
            <div class="ui-g-1"></div>
            <div class="ui-g-10">
                <p:panelGrid columns="1" layout="grid"
                    styleClass="showcase-text-align-center">
                    <h2>Domanda 1</h2>
                    <p:selectOneRadio id="domanda1" layout="pageDirection">
                        <f:selectItem
                            itemLabel="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. "
                            itemValue="1" />
                        <f:selectItem
                            itemLabel="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
                            itemValue="2" />
                        <f:selectItem
                            itemLabel="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."
                            itemValue="3" />
                        <f:selectItem
                            itemLabel="Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantiumExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteurExcepteur"
                            itemValue="4" />
                    </p:selectOneRadio>
                </p:panelGrid>
            </div>
        </div>
    </h:form>
</h:body>
</html>

我还建议你检查一下caiuse,了解所用功能的浏览兼容性。

这是怎么回事(请注意,实际的行为可能取决于pf的版本,如果你正在使用一个特定的主题,这里我以pf 6.2中的components.css为例):Primefaces selectOneRadio创建一个表,所以每个单选按钮都在一个继承表单元格布局的单元格中。单个单选按钮基本上编写为两个项目,一个div,其中包含类型为radio的输入和标签。

这两个标签都继承了内联块显示,来自pf css。内联块显示在同一行中,如果它们适合,否则将每个块放在一行中。Display flex可以处理这种情况,调整内容以适应空间,请参阅this以获得更好的描述。

现在你只需要处理最后一个最坏的情况:一个比你的行更长的单词。为此,您可以使用分词样式。您可以在此处选择是在单词开始时开始换行(break- word ),还是在行结束时开始(break- all ),有关所有选项,请参阅here

我认为总是有不同的方法来实现布局,使用css,所以尝试一些指南并测试不同的方法来保持学习。

如果你愿意,Primefaces也有一个面向多平台的版本,所以响应式等,你可以在这里看到更多PrimeNG

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61104787

复制
相关文章
java – 为什么InputStream#read()返回一个int而不是一个字节?
首先字节正好是8位,所以使用8位的char类型数据来与字节数据相互一一对应是最好的选择?但是为何方法InputStream#read()需要返回int类型值呢?
Fisherman渔夫
2020/02/19
1.2K0
springcloud 返回的数据为XML 而不是JSON
本人的原因是因为引入了jackson-dataformat-xml依赖导致的,下面查看自己项目是否包含此依赖,如果包含的话,可以去掉。 有的人添加了下面注解后可以解决,不过我这里没有解决。还是依靠上图
qubianzhong
2019/04/01
2.3K0
springcloud 返回的数据为XML 而不是JSON
为什么 useState 返回的是 array 而不是 object?
这里可以看到 useState 返回的是一个数组,那么为什么是返回数组而不是返回对象呢?我们在自定义 hook 时应该返回什么类型呢?
小鑫
2022/04/26
2.3K0
js如何返回异步函数结果
假设您有这样一个问题:您正在进行一个异步调用,并且需要从原始函数返回该调用的结果。
IT工作者
2022/01/01
6.4K0
DevOps是一个接口,而不是一个类
职位通常定义一个人需要执行的任务。“软件开发人员”开发软件,“系统管理员”管理系统,“团队负责人”领导团队。他们执行任务的质量可以用来评估他们的绩效。
DevOps云学堂
2021/05/11
1.1K0
DevOps是一个接口,而不是一个类
JS如何返回异步调用的结果?
这个问题作者认为是所有从后端转向前端开发的程序员,都会遇到的第一问题。JS前端编程与后端编程最大的不同,就是它的异步机制,同时这也是它的核心机制。
LIYI
2023/03/06
5.6K0
JS如何返回异步调用的结果?
去解决更多的问题,而不是如何最好地解决一个问题
有些人非常勤奋,别人休息和娱乐的时候,都在工作学习。但是努力了一辈子,人生也没有显著的提升,就像报道里经常说的:"某某在平凡的岗位上,勤勤恳恳工作了一辈子"。
春哥大魔王
2018/09/21
7570
去解决更多的问题,而不是如何最好地解决一个问题
mybatis返回结果处理
当查询的记录条数是多条的时候,必须使用集合接收。如果使用单个实体类接收会出现异常。如果返回的是一条记录可以用集合接收
一个风轻云淡
2023/10/15
2500
mybatis返回结果处理
C++核心准则编译边学-F.20 输出结果时更应该使用返回值而不是输出参数
A return value is self-documenting, whereas a & could be either in-out or out-only and is liable to be misused.
面向对象思考
2020/03/25
1.4K0
Java 日期类型比较没有返回正确的结果
最近在数据库处理的时候发现日期对比的时候没有返回正确的结果。 但是保存的时间实际上是相同的。 代码如下: if (!mlsPhoto.getDateUpdate().equals(photo.getDateUpdate())) { } 因为这里使用了 equals 方法。 问题解决 经过 Debug 后,这 2 个日期的纳秒数是不同的,查看下对象如下。 我们会发现其中一个对象有纳秒,一个对象没有。 但是 fastTime 是相同的。 如果使用 equals 那么这个方法比较的是毫秒,所以是不相等的。
HoneyMoose
2021/12/21
3.5K0
java 查看进程状态_java执行shell命令并返回结果
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172503.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
8990
java 查看进程状态_java执行shell命令并返回结果
【说站】Python如何用下标取得列表的单个值
1、使用的下标超出了列表中值的个数,Python 将给出 IndexError 出错信息。
很酷的站长
2022/11/24
1.3K0
【说站】Python如何用下标取得列表的单个值
一文读懂《Effective Java》第43条:返回零长度的数组或集合,而不是null
对于一个返回null 而不是零长度数组或者集合的方法,客户端几乎每次用到该方法都可能会忘记写专门处理null 返回值的代码,进而导致NPE。
后台技术汇
2022/05/28
1.6K0
Feign配置微服务间调用返回XML而不是Json的解决方案
springcloud中的微服务之间通过网关的api调用时,返回的是xml格式,而不是相应的json串,如果想要返回json格式如何处理呢
在水一方
2022/06/14
1.6K0
Feign配置微服务间调用返回XML而不是Json的解决方案
2022-12-15:寻找用户推荐人。写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。对于示例数据,结果
2022-12-15:寻找用户推荐人。写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。
福大大架构师每日一题
2023/02/01
8020
更聪明地学习,而不是苦读——《如何高效学习》
所以,需要持续大量学习的童鞋,比方说我等程序员们,除了要从知识的海洋中精挑细选出我们想要的内容,挑完了还得高效学习,不然成长的速度可能远远赶不上脱发的速度,沦落到「他变秃了,也没变强」的尴尬境地。
mzlogin
2020/05/21
6710
mybatis返回结果类型(resulttype返回list)
这样设置返回类型为resultClass=”java.util.HashMap”,查询时执行queryForList
全栈程序员站长
2022/08/01
5.7K0
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
wayn
2023/08/09
1.1K0
何时使用MongoDB而不是MySql
SpringBoot统一返回结果
在后台开发时,控制台得到的数据格式会有不同,这时我们需要设置统一返回结果,方便我们分析数据以及对数据进行管理。
算法与编程之美
2022/05/23
9480
SpringBoot统一返回结果
何时使用Kafka而不是RabbitMQ
Kafka 和 RabbitMQ 都是流行的开源消息系统,它们可以在分布式系统中实现数据的可靠传输和处理。Kafka 和 RabbitMQ 有各自的优势和特点,它们适用于不同的场景和需求。本文将比较 Kafka 和 RabbitMQ 的主要区别,并分析何时使用 Kafka 而不是 RabbitMQ。
wayn
2023/06/26
3940
何时使用Kafka而不是RabbitMQ

相似问题

Java XPath返回单个结果而不是NodeSet

11

findById返回文档列表,而不是单个结果

21

Java LDAP总是返回单个值,而不是列表

10

获取列表中的结果,而不是单个列表

129

Swift NSPredicate正在返回所有结果,而不是单个结果。

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档