我想创建一个标签(源)文件来获取 facelets 中的自定义标签(如此处所述)。我希望它像这样使用:
<my:inputText value="#{myBean.someString}"/>
<my:inputText inputText="#{myBean.inputText}"/>
在第一种情况下,可以将它绑定到我的 bean 中的一个简单的 String 属性。在第二种情况下,myBean 应该为输入字段提供一个支持 bean。该支持 bean 不仅包含值,还包含 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>
这个问题是,这是不允许的。当我在输入字段中输入一些文本时,我收到以下错误:Illegal Syntax for Set Operation。如何根据是否指定一个或另一个来使用“value”或“inputText.value”?