名称空间为http://xmlns.jcp.org/jsf/html的元素在名称空间http://xmlns.jcp.org/jsf中可能没有属性

时间:2018-03-10 22:01:09

标签: jsf namespaces

我正在使用所有jsf 2.2新命名空间

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:jsf="http://xmlns.jcp.org/jsf"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsp/jstl/core">

但是我尝试将组件selectOneMenu与selectItem一起使用多少我收到此错误:

  

HTTP状态500 - 具有命名空间的元素   http://xmlns.jcp.org/jsf/html在命名空间中可能没有属性   http://xmlns.jcp.org/jsf。命名空间http://xmlns.jcp.org/jsf是   用于其他非JSF感知标记,例如&lt; input   类型=&#34;文本&#34; jsf:id&gt;拥有&lt; h:commandButton是无效的   JSF:ID =&#34;按钮&#34; /&GT;

这是我的selectOneMenu:

<h:selectOneMenu class="form-control"
    id="selectOlhos" jsf:value="#{corpoController.corpo.corOlhos}">
        <f:selectItem  itemLabel="Escolha" itemValue=""></f:selectItem>
        <f:selectItem  itemLabel="Verdes Claros" itemValue="Verdes Claros"></f:selectItem>
        <f:selectItem  itemLabel="Verdes Escuros" itemValue="Verdes Escuros"></f:selectItem>
        <f:selectItem  itemLabel="Castanhos Claros" itemValue="Castanhos Claros"></f:selectItem>
        <f:selectItem  itemLabel="Castanhos Escuros" itemValue="Castanhos Escuros"></f:selectItem>  
</h:selectOneMenu>

如果我删除此组件,它可以完美地工作。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

  

名称空间为http://xmlns.jcp.org/jsf/html的元素可能没有名称空间http://xmlns.jcp.org/jsf中的属性。命名空间http://xmlns.jcp.org/jsf用于其他非JSF感知标记,例如&lt; input type =&#34; text&#34; jsf:id&gt; &lt; h:commandButton jsf:id =&#34; button&#34;是无效的。 /&GT;

错误字面上表示您不能在jsf:xxx元素中使用<h:xxx>属性。

我不确定如何更清楚地解释这一点。该错误基本上表示jsf:xxx属性应仅用于纯{s} <div>等HTML元素。 jsfxxx元素不支持<h:xxx>属性。

在您的具体情况下,这是错误的:

<h:selectOneMenu ... jsf:value="...">

相反,您必须使用:

<h:selectOneMenu ... value="...">

或者,如果您确实想将<h:selectOneMenu>用作所谓的 passthrough element ,那么您应该使用纯HTML <select>代替。< / p>

<select ... jsf:value="...">

另见: