我正在尝试使用rich:findComponent添加一个动态onclick事件,如下所示:
<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.我想要做的是,将String值设置为id为benchmarkEndDate的rich:calender,该字段是从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;
}我做错了什么?我如何才能做到这一点?
发布于 2011-08-20 02:58:08
由client.
#{foo = bar}不是有效的EL表达式。=不是EL中的有效运算符。EL没有赋值运算符。通过EL赋值的唯一方法是在支持它们的属性中使用值绑定(几乎完全通过JSF输入控件)。
如果对此表达式求值:
#{rich:clientId(id)}这个表达式将使用getAttribute("id")搜索request、session和application作用域,使用托管bean机制创建这样一个bean (如果它是用这个id定义的)。当它被计算并返回null时,将不会呈现任何内容。
如果此表达式的计算结果为而不是:
#{rich:clientId(id)}然后将其放在模板文本中(可能是在JSP2.0/J2EE1.4中)。
EL表达式有两种类型:
#{foo} -延迟表达式:仅在允许立即表达式的属性中求值:在模板text中允许
从JSP 2.1开始,在模板文本中使用延迟表达式是一个翻译错误。在JSP 2.1规范中:
在JSP页的模板文本中使用
#{字符序列时,除非通过配置设置明确允许,否则会触发转换错误。这是因为#{}语法专门与JSP2.1中的延迟求值相关联,并且在模板文本上下文中没有意义(只有在模板文本中使用${expr}语法的立即求值才有意义)。
在标记文件中,模板文本中的#{expr}根据标记文件的JSP版本进行处理:如果标记文件的JSP版本为2.0或更低,则模板文本中的#{expr}不会导致任何错误。如果标记文件的JSP版本等于或大于2.1,则模板文本中的#{expr}必须导致错误,除非它已被转义,或者标记文件包含设置为TRUE的deferredSyntaxAllowedAsLiteral标记指令属性。
通常,#{foo}表达式只能在JSF控制属性中(对于JSP视图)。
如果要更改服务器端值,请使用表单提交和操作绑定。这可以通过RichFaces中的AJAX完成。
https://stackoverflow.com/questions/7120925
复制相似问题