首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >富javascript函数findComponent

问富javascript函数findComponent
EN

Stack Overflow用户
提问于 2011-08-19 19:32:15
回答 1查看 2.2K关注 0票数 0

我正在尝试使用rich:findComponent添加一个动态onclick事件,如下所示:

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

但我得到了

代码语言:javascript
复制
com.sun.el.parser.ParseException: Encountered "=" at line 1, column 48.

我想要做的是,将String值设置为id为benchmarkEndDate的rich:calender,该字段是从ChannelPerformanceController类的字段resetDate中提供的。

我还在jsp页面中编写了一个javascript方法:

代码语言:javascript
复制
function setResetDate(id, date) {
    #{rich:findComponent('benchmarkEndDate').value} = date;
}

不起作用。它被称为:onclick="setResetDate('benchmarkEndDate', '#{channelPerformanceController.resetDate}')"

它在浏览器中呈现为:

代码语言:javascript
复制
function setResetDate(id, date) {
        2011-03-24 00:00:00.0 = date;
}

此方法:

代码语言:javascript
复制
function setResetDate(id, date) {
        document.getElementById(#{rich:clientId(id)}) = date;
}

被更改为:

代码语言:javascript
复制
function setResetDate(id, date) {
        document.getElementById() = date;
}

我做错了什么?我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-20 02:58:08

由client.

  • Expression语言执行
  • JavaScript,在将标记发送到浏览器之前,先在服务器上评估表达式。

#{foo = bar}不是有效的EL表达式。=不是EL中的有效运算符。EL没有赋值运算符。通过EL赋值的唯一方法是在支持它们的属性中使用值绑定(几乎完全通过JSF输入控件)。

如果对此表达式求值:

代码语言:javascript
复制
#{rich:clientId(id)}

这个表达式将使用getAttribute("id")搜索request、session和application作用域,使用托管bean机制创建这样一个bean (如果它是用这个id定义的)。当它被计算并返回null时,将不会呈现任何内容。

如果此表达式的计算结果为而不是:

代码语言:javascript
复制
#{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完成。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7120925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档