具有EL方法参数的命令按钮不调用操作方法 [英] Command button with EL method argument does not invoke action method

查看:135
本文介绍了具有EL方法参数的命令按钮不调用操作方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在尝试通过将主键userId作为EL方法参数通过命令按钮发送到我的托管bean来删除数据库条目。看起来像



Bean:

  @ManagedBean 
@ RequestScoped
public class HibernateUserHandling
{
...
public void deleteUser(String userIdViaXhtml)
{
会话session = sessionFactory.openSession();
session.beginTransaction();

session.createQuery(DELETE FROM AddressDetails WHERE USERID =:userIdViaXhtml);
session.createQuery(DELETE FROM UserDetails WHERE USERID =:userIdViaXhtml);

session.getTransaction()。commit();
session.close();
}
...
}

查看: p>

 < html> 
< body>
< ui:composition template =./ generalTemplate.xhtml
xmlns =http://www.w3.org/1999/xhtml
xmlns:h =http: //java.sun.com/jsf/html
xmlns:f =http://java.sun.com/jsf/core
xmlns:ui =http:// java。 sun.com/jsf/facelets\">
< ui:define name =content>
< h:outputStylesheet library =cssname =cssHibernate.css/>
< h:form id =main>
< h:dataTable value =#{hibernateDataOutput.persons}var =list
styleClass =order-table
headerClass =order-table-header
rowClasses =order-table-odd-row,order-table-even-row>
...
< f:facet name =header> Delete< / f:facet>
< h:commandButton id =userIdaction =#{hibernateUserHandling ['deleteUser(list.userId)']}image =delete.jpg/>
< / h:column>
< / h:dataTable>
...
< / h:form>
< / ui:define>
< / ui:composition>
< / body>
< / html>

我测试了更多的方法,例如通过将值转换为bean中的一个独立变量,就像在inputText中一样,但没有任何效果。



我认为我有一个完全错误的基本方法。



我收到以下错误:

  /hibernate.xhtml @ 39,137 action =# {hibernateUserHandling.deleteUser(list.userId)}无法解析表达式[#{hibernateUserHandling.deleteUser(list.userId)}] 

堆栈跟踪:

  javax.faces.view.facelets.TagAttributeException:/hibernate.xhtml @ 39137 action =#{hibernateUserHandling.deleteUser(list.userId)}无法解析表达式[#{hibernateUserHandling.deleteUser(list.userId)}] 
在com.sun.faces.facelets.tag.TagAttributeImpl .getMethodExpression(TagAttributeImpl.java:232)
在com.sun.faces.facelets.tag.jsf.ActionSourceRule $ ActionMapper2.applyMetadata(ActionSourceRule.java:104)
在com.sun.faces.facelets .tag.MetadataImpl.applyMetadata(M etadataImpl.java:81)
在javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
在javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java: 102)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:402)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply( ComponentTagHandlerDelegateImpl.java:159)
在javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java: 98)
在javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java: 188)
在javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在javax.faces .view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
在javax.faces .view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在javax.faces.view.facelets .DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
在javax.faces.view.facelets指示MetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在com.sun.faces.facelets.tag.ui。 DefineHandler.applyDefinition(DefineHandler.java:103)
在com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178)
在com.sun.faces.facelets。 impl.DefaultFaceletContext $ TemplateManager.apply(DefaultFaceletContext.java:395)
在com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366)
在com.sun.faces。 facelets.tag.ui.InsertHandler.apply(InsertHandler.java:108)
在javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
在com.sun.faces。 facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
在javax.faces.vie w.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在javax.faces.view.facelets。 DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
在com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
在javax.faces.view.facelets。 DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在com.sun.faces.facelets.compiler.NamespaceHandler。 apply(NamespaceHandler.java:93)
在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
在com.sun.faces.facelets.compiler.EncodingHandler.apply( EncodingHandler.java:86)
在com.sun.fa ces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
在com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367)
在com.sun。 faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
在com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
在com.sun。 faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
在com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
在com。 sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
at com。 sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
在com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100 )
在com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
在com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
在javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
在org.apache。 catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
在org.apache.catalina.core。 StandardContextValve.invoke(StandardContextValve.java:191)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
在org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:102)
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
a t org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
在org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
在org.apache .coyote.http11.Http11AprProtocol $ Http11ConnectionHandler.process(Http11AprProtocol.java:594)
在org.apache.tomcat.util.net.AprEndpoint $ Worker.run(AprEndpoint.java:1675)
在java .lang.Thread.run(Thread.java:619)
导致:javax.el.E​​LException:无法解析表达式[#{hibernateUserHandling.deleteUser(list.userId)}]
在org .apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:146)
在org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:172)
在org.apache.el .lang.ExpressionBuilder.createMethodExpression(ExpressionBuilder.java:223)
在org.apache.el.E​​xpressionFactoryImpl.createMethodExpression(ExpressionFactoryImpl.java:57)
在com.sun.faces.facelets.tag.TagAttributeImpl.getMethodExpression(TagAttributeImpl.java:222)
... 61更多
导致:org.apache.el.parser.ParseException:遇到 ((在第1行,第35列。
期待以下之一:
}...
。 ...
[...
> ...
gt...
< ...
lt...
> =...
ge...
< =...
le...
==...
eq...
!=...
ne...
&& ...
和...
|| ...
或...
*...
+...
- ...
/ ...
div...
%...
mod...

在org.apache.el.parser。 ELParser.generateParseException(ELParser.java:2142)
在org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:2024)
在org.apache.el.parser.ELParser.DeferredExpression( ELParser.java:113)
在org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:40)
在org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java: 114)
... 65更多


解决方案

您的Facelet组合是错误的。 < ui:composition> 之外的任何内容在最终视图中被忽略,模板客户端内容需要进入< ui:define> 。您的< h:form> 模板定义< ui:define> ,所以它不包括在最终的视图中,因此按钮没有任何形式提交,他们根本看起来似乎不起作用。



重新排列您的Facelet模板客户端,如下所示:

 < ui:composition template =./ generalTemplate.xhtml
xmlns =http://www.w3.org/1999/xhtml
xmlns:h =http://java.sun.com/jsf/html
xmlns:f = http://java.sun.com/jsf/core
xmlns:ui =http://java.sun.com/jsf/facelets>

< ui:define name =content>
< h:outputStylesheet library =cssname =cssHibernate.css/>
< h:form id =main>
< h:dataTable value =#{hibernateDataOutput.persons}var =list
styleClass =order-table
headerClass =order-table-header
rowClasses =order-table-odd-row,order-table-even-row>
< h:column>
< f:facet name =header>删除< / f:facet>
< h:commandButton id =userIdaction =#{hibernateUserHandling.deleteUser(list.userId)}image =delete.jpg/>
< / h:column>
< / h:dataTable>
< / h:form>
< / ui:define>
< / ui:composition>



另请参见:








与您的具体问题无关,Hibernate代码有缺陷。但是这是一个不同的问题。






更新:根据您编辑的stacktrace之后在问题中,

 导致:javax.el.E​​LException:无法解析表达式[#{hibernateUserHandling.deleteUser list.userId)}] 

显然你的环境根本不支持EL 2.2。您需要确保 web.xml 声明符合Servlet 3.0 API,并且您正在部署到与Servlet 3.0兼容的servlet容器(例如Tomcat 7,Glassfish 3, JBoss AS 6等)。



另请参见:




I am trying to delete a database entry by sending the primary key "userId" as EL method argument via a command button to my managed bean.

My current code looks like

Bean:

@ManagedBean
@RequestScoped
public class HibernateUserHandling 
{
...
public void deleteUser(String userIdViaXhtml)
{
    Session session = sessionFactory.openSession();
    session.beginTransaction();

    session.createQuery("DELETE FROM AddressDetails WHERE USERID = :userIdViaXhtml");
    session.createQuery("DELETE FROM UserDetails WHERE USERID = :userIdViaXhtml");

    session.getTransaction().commit();
    session.close();
}
...
}

View:

    <html>
    <body>
        <ui:composition template="./generalTemplate.xhtml"
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:ui="http://java.sun.com/jsf/facelets">
        <ui:define name="content">
            <h:outputStylesheet library="css" name="cssHibernate.css" />
                <h:form id="main">
                    <h:dataTable value="#{hibernateDataOutput.persons}" var="list"
                                styleClass="order-table"
                                headerClass="order-table-header"
                                rowClasses="order-table-odd-row,order-table-even-row">
                        ...
                            <f:facet name="header">Delete</f:facet>
                            <h:commandButton id="userId" action="#{hibernateUserHandling['deleteUser(list.userId)']}" image="delete.jpg" />
                        </h:column>
                    </h:dataTable>
                    ...
                </h:form>
            </ui:define>
        </ui:composition>
    </body>
</html>

I tested more ways, e.g. via getting the value to a seperate variable in the bean like in a inputText, but nothing worked.

I think I got a totally wrong basic approach.

I get the following error:

/hibernate.xhtml @39,137 action="#{hibernateUserHandling.deleteUser(list.userId)}" Failed to parse the expression [#{hibernateUserHandling.deleteUser(list.userId)}]

Stack trace:

    javax.faces.view.facelets.TagAttributeException: /hibernate.xhtml @39,137 action="#{hibernateUserHandling.deleteUser(list.userId)}" Failed to parse the expression [#{hibernateUserHandling.deleteUser(list.userId)}]
            at com.sun.faces.facelets.tag.TagAttributeImpl.getMethodExpression(TagAttributeImpl.java:232)
            at com.sun.faces.facelets.tag.jsf.ActionSourceRule$ActionMapper2.applyMetadata(ActionSourceRule.java:104)
            at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
            at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:402)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:159)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:103)
            at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:178)
            at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395)
            at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366)
            at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:108)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
            at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:188)
            at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
            at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:98)
            at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
            at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:308)
            at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:367)
            at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:346)
            at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
            at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
            at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
            at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:86)
            at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:152)
            at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:769)
            at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
            at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
            at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
            at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877)
            at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594)
            at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: javax.el.ELException: Failed to parse the expression [#{hibernateUserHandling.deleteUser(list.userId)}]
            at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:146)
            at org.apache.el.lang.ExpressionBuilder.build(ExpressionBuilder.java:172)
            at org.apache.el.lang.ExpressionBuilder.createMethodExpression(ExpressionBuilder.java:223)
            at org.apache.el.ExpressionFactoryImpl.createMethodExpression(ExpressionFactoryImpl.java:57)
            at com.sun.faces.facelets.tag.TagAttributeImpl.getMethodExpression(TagAttributeImpl.java:222)
            ... 61 more
    Caused by: org.apache.el.parser.ParseException: Encountered " "(" "( "" at line 1, column 35.
    Was expecting one of:
        "}" ...
        "." ...
        "[" ...
        ">" ...
        "gt" ...
        "<" ...
        "lt" ...
        ">=" ...
        "ge" ...
        "<=" ...
        "le" ...
        "==" ...
        "eq" ...
        "!=" ...
        "ne" ...
        "&&" ...
        "and" ...
        "||" ...
        "or" ...
        "*" ...
        "+" ...
        "-" ...
        "/" ...
        "div" ...
        "%" ...
        "mod" ...

            at org.apache.el.parser.ELParser.generateParseException(ELParser.java:2142)
            at org.apache.el.parser.ELParser.jj_consume_token(ELParser.java:2024)
            at org.apache.el.parser.ELParser.DeferredExpression(ELParser.java:113)
            at org.apache.el.parser.ELParser.CompositeExpression(ELParser.java:40)
            at org.apache.el.lang.ExpressionBuilder.createNodeInternal(ExpressionBuilder.java:114)
            ... 65 more

解决方案

Your Facelet composition is wrong. Anything outside <ui:composition> is ignored in final view and the template client content needs to go inside <ui:define>. You have the <h:form> outside the template definition <ui:define>, so it is not included in the final view and hence the buttons don't have any form to submit and they just won't seem to work at all.

Rearrange your Facelet template client as follows:

<ui:composition template="./generalTemplate.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets">

    <ui:define name="content">
        <h:outputStylesheet library="css" name="cssHibernate.css" />
        <h:form id="main">
            <h:dataTable value="#{hibernateDataOutput.persons}" var="list"
                         styleClass="order-table"
                         headerClass="order-table-header"
                         rowClasses="order-table-odd-row,order-table-even-row">
                <h:column>
                    <f:facet name="header">Delete</f:facet>
                    <h:commandButton id="userId" action="#{hibernateUserHandling.deleteUser(list.userId)}" image="delete.jpg" />
                </h:column>
            </h:dataTable>
        </h:form>
    </ui:define>
</ui:composition>        

See also:


Unrelated to your concrete problem, the Hibernate code is flawed. But that's subject to a different question.


Update: as per the stacktrace which you edited afterwards in the question,

Caused by: javax.el.ELException: Failed to parse the expression [#{hibernateUserHandling.deleteUser(list.userId)}]

Apparently your environment does not support EL 2.2 at all. You need to make sure that the web.xml is declared conform Servlet 3.0 API and that you're deploying to a Servlet 3.0 compatible servlet container (e.g. Tomcat 7, Glassfish 3, JBoss AS 6, etc).

See also:

这篇关于具有EL方法参数的命令按钮不调用操作方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆