【问题标题】:JSF SelectOneMenu show items with leading spacesJSF SelectOneMenu 显示带有前导空格的项目
【发布时间】:2014-06-11 21:41:00
【问题描述】:

我想返回带有前导空格的下拉框,所以它看起来像某种层次结构。但是p:slectOneMenu 会修剪前导空格。任何想法如何让小部件留下空间?干杯。

这里是示例代码:

@ManagedBean
public class AppBean {

    private String city;
    private List<String> cities = new ArrayList<String>();

    @PostConstruct
    public void init() {

        cities = new ArrayList<String>(
                Arrays.asList(
                        "USA",
                        "   New York",
                        "UK",
                        "   London",
                        "   Glasgow",
                        "Spain",
                        "   Barcelona"
                        ));

    }

jsf代码:

<h:form>
    <p:selectOneMenu value="#{appBean.city}">
        <f:selectItems value="#{appBean.cities}" />
    </p:selectOneMenu>
</h:form>

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    通过在我的初始代码中添加 css 解决了问题:

    .ui-selectonemenu-panel .ui-selectonemenu-list-item {
        white-space: pre;
    }
    

    【讨论】:

      【解决方案2】:

      将空格替换为nbsp;

      <h:form>
          <p:selectOneMenu value="#{appBean.city}">
              <f:selectItems value="#{appBean.cities}" var="city" itemLabel="#{city.replace(' ', '&nbsp;')}" itemValue="#{city}" />
          </p:selectOneMenu>
      </h:form>
      

      【讨论】:

      • 如果使用 trim() 更好,因为如果 city="New York" 替换结果是 "NewYork"
      • @sghaier 他想保留这些空间。我发布的内容将保留纽约和纽约之间的空间。
      • @SimonArsenault 我得到了异常:javax.servlet.ServletException: Error Parsing /ui/webapp.xhtml: Error Traced[line: 12] The entity "nbsp" was referenced, but not declared. 固定为&lt;!DOCTYPE html [ &lt;!ENTITY nbsp "&amp;#160;"&gt; ]&gt; 效果很好,但现在在选择任何子项后,例如纽约、伦敦、格拉斯哥、巴塞罗那。在框中,它带有前导空格。
      • @alex - 你应该在f:selectItems 上设置itemLabelEscaped="true" 以支持在输出中使用HTML
      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多