2011-08-19 45 views
0

我嘗試添加使用rich:findComponent作爲動態onclick事件:豐富的javascript函數findComponent

<font class="topFirstTablehdCategory2" style="font-size: 12px; cursor: pointer;" onclick="#{rich:findComponent('benchmarkEndDate').value = channelPerformanceController.resetDate}"> 
    RESET 
</font> 

但我正在逐漸

com.sun.el.parser.ParseException: Encountered "=" at line 1, column 48. 

我願意做的,就是設置字符串值至rich:calender,其編號爲benchmarkEndDate,由ChannelPerformanceController類別的字段resetDate提供。

我也寫在JSP頁面JavaScript方法:

function setResetDate(id, date) { 
    #{rich:findComponent('benchmarkEndDate').value} = date; 
} 

不工作。它被稱爲:onclick="setResetDate('benchmarkEndDate', '#{channelPerformanceController.resetDate}')"

它在瀏覽器中呈現爲:

function setResetDate(id, date) { 
     2011-03-24 00:00:00.0 = date; 
} 

這種方法:

function setResetDate(id, date) { 
     document.getElementById(#{rich:clientId(id)}) = date; 
} 

是變成:

function setResetDate(id, date) { 
     document.getElementById() = date; 
} 

我做錯了什麼?我怎樣才能做到這一點?

+0

did you try:function setResetDate(id,date){ 「#{rich:findComponent('benchmarkEndDate')。value}」= date; } - 注意引用圍繞表達式 – reevesy

+0

它呈現爲函數setResetDate(id,date){ \t \t \t「2011-03-24 00:00:00.0」= date; \t \t} –

回答

2
  • JavaScript由客戶端執行。
  • 表達式在將標記發送給瀏覽器之前,在服務器上評估語言表達式。

#{foo = bar}不是有效的EL表達式。在EL中,=不是有效的操作符。 EL沒有分配操作員。通過EL分配值的唯一方法是在支持它們的屬性中使用值綁定(幾乎完全通過JSF輸入控件)。


如果該表達式求值:

#{rich:clientId(id)} 

這個表達式將搜索requestsessionapplication範圍使用getAttribute("id")看,使用託管bean的機制來建立這樣一個bean如果這個定義ID。當這被評估並返回null時,將不會呈現任何內容。


如果此表達式爲評價:

#{rich:clientId(id)} 

然後,它被放置在模板文本(可能在JSP 2.0/J2EE 1.4。)

有兩種類型的EL表達式:

  • #{foo} - 遞延表達:只在屬性,讓他們評估
  • ${foo} - 直接表達:允許在模板文本

從JSP 2.1開始,在模板文本中使用延遲表達式會導致翻譯錯誤。從JSP 2.1規範:

當模板文本在JSP頁面中使用時,#{字符序列 觸發一個翻譯錯誤,除非通過 配置設置明確允許的。這是因爲#{}語法在JSP 2.1遞延評估相關 專門和模板文本的情況下是沒有意義的(僅 使用${expr}語法立即評估使得 模板文本意義上的)。

在標籤文件,#{expr}在模板文本根據 標記文件的JSP版本處理:如果標籤文件的JSP版本是2.0或更低, #{expr}在模板文本不會造成任何錯誤。如果標籤文件的 JSP版本等於或大於2.1,#{expr}模板 文本必須導致錯誤,除非它已經被轉義或標記文件 包含deferredSyntaxAllowedAsLiteral標籤指令屬性 設置爲TRUE

通常,#{foo}表達式必須僅在JSF控件屬性(對於JSP視圖)中。


如果要更改服務器端值,請使用表單提交和操作綁定。這可以通過RichFaces中的AJAX完成。