2013-07-09 31 views
0

我正在使用JSF 2.0並創建自己的標記。我想有結果是一個標誌,我可以用這樣的:在創建自己的標記時嵌套EL表達式

<mytaglib:label attr="test" /> 

這將使一個<h:outputLabel />這樣的:

<h:outputLabel id="test" value="#{textBean.label['test']}" /> 

TextBean有屬性label(類型爲Map<String, String>) ,它爲每個鍵提供了一個文本。

我label.xhtml看起來是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
<h:body> 
    <ui:composition> 
     <h:outputLabel for="#{attr}" value="#{textBean.label['#{attr}']}:" 
    </ui:composition> 
</h:body> 
</html> 

拳擊#{attr}#{textBean.label['#{attr}']}似乎並沒有工作。有沒有辦法讓這個工作,或我可以採取哪種解決方法來實現這個工作?

回答

1

你不應該使用嵌套的EL表達式。

嘗試這樣代替:

value="#{textBean.label[attr]}" 

我卻不能完全確定這是否是完全正確的語法,因爲我不知道是什麼labeltextBean代表。如果您需要更多信息,請提供樣品textBean

+0

工作,謝謝!我爲這個問題添加了更加精確的'label'描述。 – Bob

+0

不客氣,很高興聽到你解決了這個問題:) – Aquillo