包含漂亮面孔后,命令按钮不会调用它的操作方法

Posted

技术标签:

【中文标题】包含漂亮面孔后,命令按钮不会调用它的操作方法【英文标题】:Command button doesn't calls it's action method after including prettyfaces 【发布时间】:2014-12-17 10:25:24 【问题描述】:

我最近在我的 web 应用程序中嵌入了漂亮的面孔,现在我的行​​为真的很奇怪。

我有一个带有命令按钮的更新用户表单:命令按钮如下所示。

命令链接和命令按钮都不会调用 bean 中的操作方法。 我的 bean 是一个 View-Scoped bean。

当我点击按钮时,页面只是重新加载并且定义为被调用的动作没有被调用!简单地说,只需执行页面重新加载。

<p:commandButton style=" float: right; margin-left: 10px; " id="saveEditUser" update=":form" value="Save" action="#editUser.updateUser()"  ajax="false" />

但是,当我删除漂亮面孔中的相关行时,我的页面就会找到。 (以下是我在与编辑用户相关的漂亮面孔中定义的)

<url-mapping id="EditUser" onPostback="false">
    <pattern value="/User/Edit/#initalUserName" />
    <view-id value="/user/EditUser.xhtml" />
</url-mapping>

【问题讨论】:

【参考方案1】:

通过改变漂亮的面孔,它现在可以工作了。

<url-mapping id="EditUser" onPostback="false">
    <pattern value="/EditUser/" />
    <view-id value="/user/EditUser.xhtml" />
            <query-param name="initalUserName"> #editUser.initalUserName </query-param>
</url-mapping>

注意:即使我在没有反斜杠的情况下再次更改,同样的问题也会发生。

【讨论】:

【参考方案2】:

点击按钮后真的会调用editUser.updateUser() 方法吗? (使用断点确定)

我猜你的映射应该是:

<url-mapping id="EditUser" onPostback="false">
    <pattern value="/User/Edit/#initalUserName" />
    <view-id value="/user/EditUser.jsf" />
</url-mapping>

注意.xhtml.jsf 替换

【讨论】:

感谢您的 cmets。实际上 updateUser() 并没有以任何方式调用,页面只是被刷新了。但我能够通过对映射进行一些更改来解决问题。

以上是关于包含漂亮面孔后,命令按钮不会调用它的操作方法的主要内容,如果未能解决你的问题,请参考以下文章

如何从链接/非面孔请求调用 JSF 支持 bean 方法

onOptionsItemSelected() 方法不会在 Fragment 上调用

调用委托方法后执行选择器

使用带有网络过滤器的漂亮面孔

如果在 addSubView 之后调用 UIButton 不会移动

释放按钮后调用的 keyPressEvent