Java JSTL的等价物是什么<;c:forTokens>;使用JSF还是PrimeFaces?

Java JSTL的等价物是什么<;c:forTokens>;使用JSF还是PrimeFaces?,java,jsf,primefaces,jstl,Java,Jsf,Primefaces,Jstl,假设我们有以下JSP代码: <c:forTokens items="${someBean.aStringOfIntNumbersSeparatedBySemicolons}" delims=";" var="item" varStatus="stat"> ${item} <c:if test="${!stat.last}">;</c:if> <c:if tes

假设我们有以下JSP代码:

<c:forTokens items="${someBean.aStringOfIntNumbersSeparatedBySemicolons}" 
             delims=";" 
             var="item" 
             varStatus="stat">
  ${item}
  <c:if test="${!stat.last}">;</c:if>
  <c:if test="${stat.count %5 == 0}">
    <br/>
  </c:if>
</c:forTokens>

${item}
;

其中输出按行呈现,每行5列,如下所示:


如何使用JSF或Primefaces标记实现这一点?

没有直接的等价物,您应该将令牌转换为托管bean中的列表,并使用框架组件中的列表

List<String> tokens = Arrays.asList("car1,car2,car3,car4".split(","));
List tokens=Arrays.asList(“car1,car2,car3,car4.split”(“,”);
对于这种简单的场景,您可能不需要primefaces组件。当您使用面向对象模型时,可以利用PF组件迭代列表,并使用数据绑定显示其字段。例如:

数据列表-对于cars1列表中的每种车型,列表中将添加一行

<p:dataList value="#{dataListView.cars1}" var="car" type="ordered">
    <f:facet name="header">
        Basic
    </f:facet>
    #{car.brand}, #{car.year}
</p:dataList>

基本的
#{car.brand},{car.year}

数据表-对于车中的每辆车列表,表组件中会添加一行

<p:dataTable var="car" value="#{dtBasicView.cars}">
    <p:column headerText="Id">
        <h:outputText value="#{car.id}" />
    </p:column>

    <p:column headerText="Year">
        <h:outputText value="#{car.year}" />
    </p:column>

    <p:column headerText="Brand">
        <h:outputText value="#{car.brand}" />
    </p:column>

    <p:column headerText="Color">
        <h:outputText value="#{car.color}" />
    </p:column>
</p:dataTable>


使用这种方法,您可能会加快专注于业务逻辑而不是UI设计的开发速度。

没有直接的等价物,您应该将令牌转换为托管bean中的列表,并使用框架组件中的列表

List<String> tokens = Arrays.asList("car1,car2,car3,car4".split(","));
List tokens=Arrays.asList(“car1,car2,car3,car4.split”(“,”);
对于这种简单的场景,您可能不需要primefaces组件。当您使用面向对象模型时,可以利用PF组件迭代列表,并使用数据绑定显示其字段。例如:

数据列表-对于cars1列表中的每种车型,列表中将添加一行

<p:dataList value="#{dataListView.cars1}" var="car" type="ordered">
    <f:facet name="header">
        Basic
    </f:facet>
    #{car.brand}, #{car.year}
</p:dataList>

基本的
#{car.brand},{car.year}

数据表-对于车中的每辆车列表,表组件中会添加一行

<p:dataTable var="car" value="#{dtBasicView.cars}">
    <p:column headerText="Id">
        <h:outputText value="#{car.id}" />
    </p:column>

    <p:column headerText="Year">
        <h:outputText value="#{car.year}" />
    </p:column>

    <p:column headerText="Brand">
        <h:outputText value="#{car.brand}" />
    </p:column>

    <p:column headerText="Color">
        <h:outputText value="#{car.color}" />
    </p:column>
</p:dataTable>

使用这种方法,您可以加快开发速度,专注于业务逻辑而不是UI设计。

这是我找到的唯一可行的解决方案 目前,我发现的唯一可行的解决方案部分在于JSF,部分在于后端代码:

  • 编辑后端代码,使其在该
    字符串的每五个元素后添加一个

    字段
    搜索查找编号,并用分词分隔

  • escape=“false”
    添加到前端保存数据的
    标记中。(默认值是
    escape=“true”
    ,它将

    呈现为
    br/

  • 我找到的唯一有效的解决办法 目前,我发现的唯一可行的解决方案部分在于JSF,部分在于后端代码:

  • 编辑后端代码,使其在该
    字符串的每五个元素后添加一个

    字段
    搜索查找编号,并用分词分隔

  • escape=“false”
    添加到前端保存数据的
    标记中。(默认值是
    escape=“true”
    ,它将

    呈现为
    br/


  • 您可以在JSF中使用这些核心标记,xmlns:c=“”,否则只需使用ui:repeat并使用自定义函数计算var属性,比如我尝试过的@Mick,但我不能将
    ${…}
    表达式的
    标记与JSF一起使用。它不起作用。你可以在JSF中使用那些核心标记,xmlns:c=“”,否则只需使用ui:repeat并使用自定义函数计算var属性,比如我尝试过的@Mick,但我不能在JSF中使用
    ${…}
    表达式的
    标记。抱歉,这是一个非常“非网络化”的解决方案。您可以很容易地使用向上投票的答案中所做的拆分,然后使用
    ui:repeat
    来呈现div并使用…抱歉,这是非常“非web式”的解决方案。您可以很容易地使用向上投票的答案中的拆分,然后使用
    ui:repeat
    来呈现div并使用…Check…Check。。。