Jsf 如何创建具有值属性和支持bean的InputText标记文件?
我想创建一个标记(源)文件,以便在facelets()中获得自定义标记。我希望它能像这样使用:Jsf 如何创建具有值属性和支持bean的InputText标记文件?,jsf,facelets,el,tagfile,Jsf,Facelets,El,Tagfile,我想创建一个标记(源)文件,以便在facelets()中获得自定义标记。我希望它能像这样使用: <my:inputText value="#{myBean.someString}"/> <my:inputText inputText="#{myBean.inputText}"/> 在第一种情况下,可以将它绑定到我的bean中的一个简单字符串属性。在第二种情况下,myBean应该为输入字段提供一个支持bean。该支持bean不仅包含值,还包含诸如maxlength、d
<my:inputText value="#{myBean.someString}"/>
<my:inputText inputText="#{myBean.inputText}"/>
在第一种情况下,可以将它绑定到我的bean中的一个简单字符串属性。在第二种情况下,myBean应该为输入字段提供一个支持bean。该支持bean不仅包含值,还包含诸如maxlength、disabled、mandatory等属性
标记文件如下所示(简化):
这个问题是,这是不允许的。当我在输入字段中输入一些文本时,会出现以下错误:Set操作的语法非法。如何使用“value”或“inputText.value”,取决于是否指定了其中一个?尝试以下方法:
<my:inputText inputText="#{bean.value}" disabled="#{bean.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}"/>
</c:if>
<h:inputText value="#{someValue}" disabled="#{disabled}"/>
</ui:fragment>
假设您的if测试按照您的要求执行(我通常使用它们。可能应该,看起来比仅使用呈现属性更干净),这可能会起作用
<?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:if test="#{empty value and not empty inputText}">
<h:inputText value="#{inputText.someValue}"
disabled="#{disabled or inputText.disabled}"/>
</c:if>
<c:if test="#{not empty value and empty inputText}">
<h:inputText value="#{value}" disabled="#{disabled}"/>
</c:if>
</ui:fragment>
使用SomeValue可能会生成一个新的本地字符串,而不是维护对给定字符串的引用。我看不出有什么区别,只看到“disabled”属性。你能给我解释一下,为什么这会有帮助吗?我没有使用inputText.value和inputText.disabled,这两个都不适用于facelet。(我想!)
<?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:if test="#{empty value and not empty inputText}">
<h:inputText value="#{inputText.someValue}"
disabled="#{disabled or inputText.disabled}"/>
</c:if>
<c:if test="#{not empty value and empty inputText}">
<h:inputText value="#{value}" disabled="#{disabled}"/>
</c:if>
</ui:fragment>