迁移JSF 1.2后不再确认为JSF 2.2( not recognized anymore

2019-10-23 14:20发布

我升级我的应用程序从JSF 1.2到JSF 2。

我想一个简单的下方forEach标记,但它没有显示在循环内什么。

<table 
    id="tab${sectionId}"
    border="0" 
    cellpadding="0" 
    cellspacing="0" 
    width="100%"
    class="listingTable"
>
    <c:forEach
        var="row" 
        rowStatus="index"
        items="#{bean.department.userActivities}"
    >
        <tr>
            <td>
                test
            </td>
         </tr>
    </c:forEach>
</table>

值测试没有显示出来。 已在C:的forEach implementaion改变?

我试着用替换,但有一些其他的问题。 这可是使里面的内容。 但是,如果我有一个内部组件,我不能到后台bean赋值为组件的ID。 例子是如下面

<table 
    id="tab${sectionId}"
    border="0" 
    class="listingTable"
>
    <t:dataList
        var="row" 
        rowIndexVar="index"
        value="#{bean.department.userActivities}"
    >
        <h:column>
            <h:outputText id="#{row.activityCode}">test1</h:outputText>
        </h:column>
    </t:dataList>
</table>

所以,用。 我不能够支持bean属性分配作为组件的ID。 我收到错误“java.lang.IllegalArgumentException异常:组件标识符不能是零长度的字符串”

任何人都可以请帮我理解,为什么在C:forEach标记不能正常工作。 我有使用forEach标记巨大的代码。 有了升级,我将不得不删除所有的forEach如果在JSF2没有更多的支持:(

Answer 1:

JSTL标签库/ XML命名空间URI已经提出和跨越JSTL / JSF / Facelets的版本返回改变。

有关JSP JSF与JSTL 1.0,它是

<%@taglib prefix="c" uri="http://java.sun.com/jstl/core"%>

有关JSF JSP与JSTL 1.1+ ,它是

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

对于有关Facelets的JSF 1.x中与JSTL 1.1+,它是

<xxx xmlns:c="http://java.sun.com/jstl/core">

对于有关Facelets的JSF 2.x的与JSTL 1.2+,它是

<xxx xmlns:c="http://java.sun.com/jsp/jstl/core">

对于有关Facelets的JSF 2.2+与1.2+ JSTL,它是

<xxx xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">

请确保你选择正确的一个。

也可以看看:

  • 我们JSTL wiki页面

无关的具体问题,哪个你其实最终要解决,头一个想到了以下相关问题的基本功能要求:

  • 使用ID = “#{...}”导致java.lang.IllegalArgumentException异常:空id属性是不允许的
  • 如何使用EL用的<ui:重复VAR>在JSF组件的id属性


文章来源: not recognized anymore after migration JSF 1.2 to JSF 2.2