2012-07-13 2 views
0

У меня есть пользовательский тег и хочу, чтобы установить идентификатор из внутреннего элементаJSF условно установить идентификатор

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:rich="http://richfaces.org/rich" 
    xmlns:a4j="http://richfaces.org/a4j"> 

<f:subview rendered="#{not empty id}"> 
    <h:message styleClass="message" id="#{id}" errorClass="message error" 
     warnClass="message warn" for="#{element}" /> 
</f:subview> 
<f:subview rendered="#{not id}"> 
    <h:message styleClass="message" errorClass="message error" 
     warnClass="message warn" for="#{element}" /> 
</f:subview> 
</html> 

, но я всегда получаю

Empty id attribute is not allowed 

как я могу АРХИВ что, когда пользователь устанавливает идентификатор, который используется, и когда не jsf должен генерировать его самостоятельно

ответ

1

Используйте <c:if>, чтобы условно добавить <f:attribute> с id.

<h:message styleClass="message" errorClass="message error" warnClass="message warn" for="#{element}"> 
    <c:if test="#{not empty id}"> 
     <f:attribute name="id" value="#{id}" /> 
    </c:if> 
</h:message> 

Кстати, используя <html> вместо <ui:composition> в пользовательских тегов или даже без него довольно странно. Вы уверены, что в итоге вы получите синтаксически корректный HTML? Кроме того, ваше второе выражение <f:subview rendered> неверно, но это не имеет никакого отношения к конкретному сообщению об ошибке, которое вы получили.

+0

привет это решение приводит к той же ошибке – wutzebaer

Смежные вопросы