【问题标题】:How to pass an EL function call to composite attribute?如何将 EL 函数调用传递给复合属性?
【发布时间】:2012-02-09 08:52:09
【问题描述】:

我有一个带有按钮的组合,我希望能够将一个完整的字符串传递给该按钮。

<composite:attribute name="oncomplete"/>

<h:commandButton oncomplete="#{cc.attrs.oncomplete}"/>

现在我想传递一个 EL 函数调用,它将一个 Javascript 对象解析到这个 oncomplete 字段中。

<comp:composite oncomplete="#{p:widgetVar('dlgUserAdd')}.hide();">

#{p:widgetVar('dlgUserAdd')} //returns a Javascript Object.

但这会导致异常:

com.sun.el.lang.FunctionMapperImpl java.lang.ClassNotFoundException: com.sun.el.lang.FunctionMapperImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)

这里可行,但不是我想做的:

<comp:composite oncomplete="dlgUserAdd.hide();">

【问题讨论】:

    标签: javascript function jsf el composite-component


    【解决方案1】:
    <script type="text/javascript">
      function hideWidget(widget){
        widget.hide();
      }
    </script>
    
    <comp:composite oncomplete="hideWidget(#{p:widgetVar('dlgUserAdd')})" />
    

    【讨论】:

    • 这看起来很丑。组合实现站点需要知道这个功能,即使它对它不可见,或者组合和实现站点都需要知道它!其他人有想法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    相关资源
    最近更新 更多