问题标签 [methodexpression]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsf - 将方法传递给复合组件会直接执行该方法
我正在尝试创建一个标准化的按钮面板,它将显示在我们的大多数屏幕上。由于按钮总是相同的,除了某些操作,复合组件的签名是这样的:
当我像这样将此 CC 添加到我的视图中时:
该方法zef0302View.save()
被直接调用而不传递给 CC。我究竟做错了什么?我已经将方法作为属性传递给其他组件,但我看不出我做了什么不同。
我将 Wildfly 8.1 与 JSF 2.2 一起使用。
谢谢您的帮助。
[编辑]
问题不在于属性的传递,而在于测试它们在 CC 中的存在。显然,在测试这样的<c:if test="null ne cc.attrs.resetAction"/>
方法时,会调用该方法。测试也是如此not empty cc.attrs.resetAction
。
正确测试方法属性的存在,而不实际调用它<c:if test="cc.getValueExpression('actionMethod')">
(或将它放在rendered
需要的块中)。
解决方案来自另一个问题 Smutje 非常好心地指出我的注意力(见评论)。
jsf - 将方法表达式作为标记文件属性传递
我有以下标记文件:
其ajaxListener
属性配置为:
当标签用作:
抛出以下异常:
这是如何引起的,我该如何解决?
如果我使用带有 的复合组件,它可以工作<cc:attribute method-signature>
,但是我不能使用复合组件来避免此处描述的问题:panelgrid 内的复合组件未“扩展”
jsf - 如何将 bean 的方法与 actionListener 中的包绑定?
我是 Java/JSF 技术的新手,我一直在尝试做简单的 UI 来了解 Java/JSF 世界中的情况。
现在我想将 ManagedBean 的方法及其包名绑定到 CommandButton 的 actionListener。
例子:
索引.xhtml
MyClass.java
我尝试将方法绑定为上面给定的示例,但未调用该方法。此外,我没有在 Netbeans 的小自动完成窗口中看到我的包。如果我以#{class.method}格式绑定方法(如互联网上所有给出的示例),它就可以工作。
有没有办法做到这一点?
为什么我需要这样做?
虽然项目越来越大,但命名类越来越难。所以,我认为不同包中的相同类名让生活更轻松。
jsf - 为什么我可以绑定如果 JSF 不支持任意方法?
我正在使用 Glassfish 3.1.2.2 和 JSF Mojarra 2.1.6。
我有以下 Facelets 页面:
以及以下支持bean:
当我单击该链接时,“信息:它被称为:1”出现在控制台中。
文档binding
内容如下:
库: http: //xmlns.jcp.org/jsf/core,http : //java.sun.com/jsf/core(Jsf核心)
标签:actionListener
捆绑
计算结果为实现 javax.faces.event.ActionListener的对象的值绑定表达式。[强调我的]
此外,这个问题的公认答案指出,不可能f:actionListener
调用任意方法。
如果不支持,为什么要调用支持 bean 方法?
jsf - MethodExpression 中 java.lang.Class.isAssignableFrom 处的 java.lang.NullPointerException
我想通过以下方式获取输入文本的值:
但是当我点击我的按钮时,我得到了一个NullPointerException
:
ajax - 如何记录 JSF ajax 请求的方法表达式
我已经弄清楚了如何在过滤器中记录请求何时是 ajax 请求以及它来自哪个页面。
我真正想做的是记录 ajax 请求的实际用途。比如被 ajax 调用的方法的名字(例如这个调用中的“findAddress” <p:ajax process="contactDetails" update="@form" listener="#{aboutYouController.findAddress}" ....
:)
我怎样才能做到这一点?我的应用程序有许多 ajax 请求,我想记录正在触发的请求。
jsf - JSF 1.2 到 JSF 2.2 迁移 - 自定义组件中的 MethodBinding
我最近继承了一个遗留 (JSF 1.2) 项目,并负责使其与 JSF 2.2 兼容。我不是一位经验丰富的 JSF 开发人员,并且一直在听从网络上的各种建议。我遇到的一个问题是我找不到合适的解决方案,那就是通过表达式语言参数将方法绑定传递给自定义组件。这是一个例子:
浏览.xhtml:
MyBean.java:
Conditional.java(映射到 custom:condition 标签):
我已经通过传递一个String
表达式(例如"MyBean.canView"
将 EL 哈希/大括号关闭,然后将它们连接回组件中并创建和调用MethodExpression
. 这一切似乎有点像 hack,更不用说没有像之前的 JSF 1.2 代码那样完成 facelet 中的 EL 表达式求值。
我错过了什么吗?应该如何将此 JSF 1.2 代码上转换为 JSF 2.2?
编辑:这是我的“hack”,有点工作。希望有更好的方法。
jsf - 方法表达式上的“javax.el.ELException:在类型上找不到属性”
我在 Linux 服务器上使用 Primefaces 5.2、jsf 2.2 和 Tomcat 8。这是我的 xhtml 中的行:
UploadController 类中的方法:
如果我在码头启动我的页面,一切正常。
但是如果我用tomcat 8在linux服务器上启动它,我得到了
在类型上找不到 javax.el.ELException 属性“完整”
例外。我还尝试在我的 Windows 机器上的 tomcat 8 中运行我的代码(由 Maven 在货物容器中启动)。那里没问题。
更进一步的是为方法 UploadController.complete 放置一个参数:
...排除参数的唯一方法(不接受 f:param、f:attribute、... => 相同的 ELException)。但随后 UploadController 中的事件“fileUploadEvent”为 NULL。
如何解决问题?
jsf - 从复合组件调用 void 方法
我正在尝试构建一个复合 JSF 组件,但在调用方法时遇到了一些麻烦。我的组件在 a 中有一些输入,并且一个添加按钮负责添加更多对象,用于提供重复的列表。我希望该按钮根据负责它所负责的页面的托管 Bean 调用不同的方法(因此它应该是每个 xhtml 中设置的变量)。但是每次我按下按钮时,我都会收到异常消息:
“com.test.TestMB”类没有“addAction”属性。
这是我的组件:
这是我的实现:
我的 TestMB 类不仅包含该方法,而且如果我将按钮更改为:
addToListMethod 非常简单:
关于什么是错误的任何想法,我该如何解决?
jsf - 在 EL 中动态调用方法,该方法是从 String 评估的
我有一个提交按钮。这个提交按钮有一个“action”属性。但是这个动作属性应该总是调用另一个函数(某种通用的)。所以我想动态调用一个函数。这是因为我需要重用这个组件。我只是不知道操作属性需要哪种类型(方法、字符串等?)以及如何正确引用所需的“BeanWithMethodToCall”。
在 EL:
这似乎很棘手..我希望有人可以帮助我。我需要反射吗?或EL解析器或其他任何东西?