Я хочу создать файл тега (источника), чтобы получить пользовательский тег в фасетах (, как описано здесь ). Я хочу, чтобы это привыкло так:
<my:inputText value="#{myBean.someString}"/>
<my:inputText inputText="#{myBean.inputText}"/>
В первом случае его можно привязать к простому свойству String внутри моего компонента. Во втором случае myBean должен предоставить базовый компонент для поля ввода. Этот компонент содержит не только значение, но и такие свойства, как maxlength, disabled, обязательный и т. Д.
Файл тегов выглядит следующим образом (упрощенно):
<?xml version="1.0" encoding="UTF-8"?>
<ui:fragment
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:h="http://java.sun.com/jsf/html">
<c:set var="someValue" value="#{value}"/>
<c:if test="#{empty value and not empty inputText}">
<c:set var="someValue" value="#{inputText.value}"/>
</c:if>
<h:inputText value="#{someValue}"
disabled="#{disabled or inputText.disabled}"/>
</ui:fragment>
Эта проблема, это не разрешено. Когда я вписываю некоторый текст в поле ввода, я получаю следующую ошибку: Недопустимый синтаксис для операции набора . Как я могу использовать «value» или «inputText.value» в зависимости от того, указан тот или другой?