2009-07-17 70 views
0

我想創建一個標籤(源)文件來獲取facelets中的自定義標籤(as described here)。我希望它能像這樣使用:如何使用值屬性和支持bean創建InputText標記文件?

<my:inputText value="#{myBean.someString}"/> 
<my:inputText inputText="#{myBean.inputText}"/> 

在第一種情況下,可以將它綁定到我的bean中的一個簡單的String屬性。在第二種情況下,myBean應該爲輸入字段提供一個支持bean。該支持bean不僅包含值,還包含諸如maxlength,disabled,mandatory等屬性。

標籤文件看起來像這樣(簡化):

<?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> 

這個問題,這是不允許的。當我在輸入字段中輸入一些文本時,出現以下錯誤:設置操作的非法語法。我怎樣才能使用「值」或「inputText.value」取決於是否指定一個或另一個?

回答

0

試試這個:

<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> 
+0

我看不出有什麼區別,只有「禁用」屬性。你能向我解釋爲什麼這應該有幫助嗎? – 2009-07-20 11:14:38

1

假設你如果測試做你想讓他們到什麼(我平時使用它們或許應該,似乎比只使用rendered屬性吸塵器)這可能會工作...

<?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可能會生成一個新的本地字符串,而不是維護對您給定字符串的引用。

相關問題