Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果value属性包含方括号,则dataTable仅打印第一项_Java_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Java 如果value属性包含方括号,则dataTable仅打印第一项

Java 如果value属性包含方括号,则dataTable仅打印第一项,java,jsf,jsf-2,primefaces,Java,Jsf,Jsf 2,Primefaces,我有一个h:dataTable,它显示ProfileNotification如下所示: <h:dataTable value="#{myBean.profileNotifications}" var="item" rendered="#{myBean.renderProfileNotification}"> <h:column> <h:form>

我有一个
h:dataTable
,它显示
ProfileNotification
如下所示:

        <h:dataTable value="#{myBean.profileNotifications}" var="item"
                     rendered="#{myBean.renderProfileNotification}">
            <h:column>
                <h:form>                        
                    <h:outputText value="#{item.userName} "/>
                    <h:outputText value="commented on your profile. "/>
                    <!-- <h:outputText value="[#{item.createTime}]"/> -->
                </h:form>
            </h:column>                
        </h:dataTable>
myBean.java

@ManagedBean(name="myBean")
@SessionScoped
public class myBean {

List<String> temp = null;

public myBean() {
}

private boolean display = false;

@PostConstruct
public void init(){
    temp = new ArrayList<String>();
    temp.add(0, "Tom");
    temp.add(1, "Peter");
    temp.add(2, "Mike");
    temp.add(3, "Fox");
}

public List<String> getTemp() {
    return temp;
}

public void setTemp(List<String> temp) {
    this.temp = temp;
}

public boolean isDisplay() {
    return display;
}

public void setDisplay() {
    this.display = !this.display;
}
}
@ManagedBean(name=“myBean”)
@会议范围
公共类myBean{
列表温度=空;
公共myBean(){
}
私有布尔显示=false;
@施工后
公共void init(){
temp=新的ArrayList();
临时添加(0,“Tom”);
临时添加(1,“彼得”);
临时添加(2,“麦克”);
临时添加(3,“福克斯”);
}
公共列表getTemp(){
返回温度;
}
公共无效设置(列表临时){
this.temp=temp;
}
公共布尔值isDisplay(){
返回显示;
}
公共void setDisplay(){
this.display=!this.display;
}
}

我想是哪里出了问题。显然,将
[]
放在
属性中是错误的。我所拥有的是:

<h:outputText value="[#{item.createTime}]"/>

然后一切正常。必须是特殊字符之一。

好的,这是导致问题的最后一个
]
。使用时

<h:outputText value="[#{item}]"/>
这将导致以下XML响应:

<?xml version="1.0" encoding="UTF-8"?><partialResponse><components><component><id>table</id><output><![CDATA[
<form id="table" name="table" method="post" action="/playground/test.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="table" value="table" />
<table>
<tbody>
<tr>
<td>[Tom]
            </td>
</tr>
<tr>
<td>[Peter]
            </td>
</tr>
<tr>
<td>[Mike]
            </td>
</tr>
<tr>
<td>[Fox]
            </td>
</tr>
</tbody>
</table>
~com.sun.faces.saveStateFieldMarker~
</form>]]></output></component></components><state><![CDATA[<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-1679996061683473780:1967669133311943592" autocomplete="off" />]]></state><callbackParams><callbackParam>{"validationFailed":false}</callbackParam></callbackParams></partialResponse>
Mojarra的ajax响应处理程序不会在每次
]
之后打印不必要的CDATA块。这可能是PrimeFaces的根本原因



更新:向PF人员报告的问题:

这绝对不是JSF的评论。使用
哦,我的代码中没有//只用于插图,但我为您更改了它。您可以发布“item”/“myBean”代码吗?有趣。听起来像艾尔巴格。那些
[]
在EL中也有特殊含义,但通常仅在表达式
{}
中。您使用的是什么servletcontainer?或者您正在使用您在
web.xml
中定义的自定义/特殊EL实现?如果你能把它固定在一个小的可复制的代码段中,并且有所有的存根,那就太好了。没有定制/特殊的EL实现。我不确定我的servlet容器是什么?我使用的是JavaEE6,这是我的servlet容器吗?我正试着按照你的要求把它转换成可复制的小代码。回到几点:DA servletcontainer是您用来运行JSP/Servlet/EL API的任何东西(间接地也是JSF,但这并不重要,因为它运行在JSP/Servlet/EL之上)。例如ApacheTomcat、Oracle Glassfish、JBoss AS等。根据您的问题历史记录,我打赌它是Glassfish v3。到底是哪个版本?我刚刚更新了我的帖子。我成功地在一个可复制的小版本中重新创建了这个bug。顺便说一句,我确实使用了primefaces框架。不确定这是否是primefaces的bug。
<h:outputText value="[#{item}]"/>
<?xml version="1.0" encoding="UTF-8"?><partialResponse><components><component><id>table</id><output><![CDATA[
<form id="table" name="table" method="post" action="/playground/test.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="table" value="table" />
<table>
<tbody>
<tr>
<td>[Tom]]]><![CDATA[</td>
</tr>
<tr>
<td>[Peter]]]><![CDATA[</td>
</tr>
<tr>
<td>[Mike]]]><![CDATA[</td>
</tr>
<tr>
<td>[Fox]]]><![CDATA[</td>
</tr>
</tbody>
</table>
~com.sun.faces.saveStateFieldMarker~
</form>]]></output></component></components><state><![CDATA[<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="8834103461195979522:5904029216967015556" autocomplete="off" />]]></state><callbackParams><callbackParam>{"validationFailed":false}</callbackParam></callbackParams></partialResponse>
<h:outputText value="[#{item})"/>
<?xml version="1.0" encoding="UTF-8"?><partialResponse><components><component><id>table</id><output><![CDATA[
<form id="table" name="table" method="post" action="/playground/test.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="table" value="table" />
<table>
<tbody>
<tr>
<td>[Tom)</td>
</tr>
<tr>
<td>[Peter)</td>
</tr>
<tr>
<td>[Mike)</td>
</tr>
<tr>
<td>[Fox)</td>
</tr>
</tbody>
</table>
~com.sun.faces.saveStateFieldMarker~
</form>]]></output></component></components><state><![CDATA[<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="502405171373727621:5591448575905434431" autocomplete="off" />]]></state><callbackParams><callbackParam>{"validationFailed":false}</callbackParam></callbackParams></partialResponse>
<h:outputText value="[#{item}"/>]
<?xml version="1.0" encoding="UTF-8"?><partialResponse><components><component><id>table</id><output><![CDATA[
<form id="table" name="table" method="post" action="/playground/test.jsf" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="table" value="table" />
<table>
<tbody>
<tr>
<td>[Tom]
            </td>
</tr>
<tr>
<td>[Peter]
            </td>
</tr>
<tr>
<td>[Mike]
            </td>
</tr>
<tr>
<td>[Fox]
            </td>
</tr>
</tbody>
</table>
~com.sun.faces.saveStateFieldMarker~
</form>]]></output></component></components><state><![CDATA[<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-1679996061683473780:1967669133311943592" autocomplete="off" />]]></state><callbackParams><callbackParam>{"validationFailed":false}</callbackParam></callbackParams></partialResponse>
<h:commandLink value="Display" actionListener="#{myBean.setDisplay}">
    <f:ajax render=":table" />
</h:commandLink>