如何将EL函数调用传递给复合属性?

时间:2012-01-13 03:53:57

标签: javascript function jsf el composite-component

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

<composite:attribute name="oncomplete"/>

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

现在我想传递一个EL函数调用,它将Javascript对象解析为这个不完整的字段。

<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();">

1 个答案:

答案 0 :(得分:0)

<script type="text/javascript">
  function hideWidget(widget){
    widget.hide();
  }
</script>

<comp:composite oncomplete="hideWidget(#{p:widgetVar('dlgUserAdd')})" />