Java JSTL的等价物是什么<;c:forTokens>;使用JSF还是PrimeFaces?
假设我们有以下JSP代码: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
<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/
)
字符串的每五个元素后添加一个
,字段搜索查找编号,并用分词分隔
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。。。