我正在使用所有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>
如果我删除此组件,它可以完美地工作。 有什么帮助吗?
答案 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="...">