栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

无法通过EL将参数传递给方法-javax.el.MethodNotFoundException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

无法通过EL将参数传递给方法-javax.el.MethodNotFoundException

这是Tomcat中的错误。当您直接在Bean上调用该方法时,它起作用,但在嵌套属性上调用时,则无效。我记得这个问题是我曾经报告过的问题50449,但是由于“对我有用
”而被关闭(也许他们没有对它进行非常正确的测试,我觉得不值得再次与Tomcat家伙争论,我还没有这样做)与他们有很好的经验)。无论如何,我已将其重新报告为52445,并带有更可靠的测试用例-
我希望。

同时,应该用不同于Glassfish的方法替代EL的实现方案。但是我可以告诉你,无论您想做什么,都不是正确的方法。您已经在模型(

User
实体类)上而不是在控制器(
Users
托管Bean类)上声明了业务方法。这个不对。该模型应仅用于保存数据。控制器应用于保留业务操作。

我建议按照以下方式重写您的案例:

<h:form id="usersForm">    <p:outputPanel> <p:dataTable id="userTable" value="#{users.user.friends}" var="friend"> <p:column>     <h:outputText value="#{friend.name}" /> </p:column> <p:column>     <p:commandButton action="#{users.removeFriend(friend)}"         process="@this" update="userTable somethingElse" onerror="errorDialog.show();"         icon="ui-icon-delete" title="delete user" /> </p:column>        </p:dataTable>    </p:outputPanel>    <p:commandButton action="#{users.removeAllFriends}"        process="@this" update="userTable numUsers"        value="delete all friends?" /></h:form>

并将业务方法放入

Users
托管bean中:

public void removeFriend(Friend friend) {    userService.removeFriend(user, friend);    // ...}public void removeAllFriends() {    userService.removeAllFriends(user);    // ...}

同样,

UserService
另一个人
@ManagedBean
也不是完全正确的。它实际上应该是
@Stateless
EJB,但这是另一回事了。如果不使用例如OpenEJB来丰富EJB,则无论如何在Tomcat上都不支持EJB。如果没有EJB,它不一定需要是另一个托管bean。您不想直接将这些服务公开到视图中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/385915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号