Jsf PrimeFaces,命令按钮动作不起作用
该项目使用SpringWebFlow和JSF(PrimeFaces)。我有一个名为“manageArticle.xhtml”的页面。在页面上,如果用户单击“编辑”按钮,将显示一个p:面板,其中包含当前文章对象内容。将项目对象传递给视图,如下所示Jsf PrimeFaces,命令按钮动作不起作用,jsf,primefaces,spring-webflow,Jsf,Primefaces,Spring Webflow,该项目使用SpringWebFlow和JSF(PrimeFaces)。我有一个名为“manageArticle.xhtml”的页面。在页面上,如果用户单击“编辑”按钮,将显示一个p:面板,其中包含当前文章对象内容。将项目对象传递给视图,如下所示 <transition on="edit_article" to="manageArticles"> <evaluate expression="articles.selectedRow" result="flo
<transition on="edit_article" to="manageArticles">
<evaluate expression="articles.selectedRow" result="flowScope.selectedArticle" />
<set name="flashScope.editMode" value="'edit'" />
</transition>
<p:commandButton id="editArticleSave" action="${articleManager.saveArticle(selectedArticle)}" ajax="false" value="Save" />
但是,当我单击save按钮时,没有调用该操作。我在函数saveArticle中设置了一个断点,但它没有中断。该操作被忽略。有人知道发生了什么吗?非常感谢。我改为“#”,但它不起作用。如果在操作定义中输入了错误的函数名,如'articleManager.dummy()',则不会引发异常,也不会出现错误。它只是被绕过了。只是一个更新,命令按钮是在面板中定义的。当editMode为“编辑”时,将呈现面板:rendered=“#{editMode=='edit'}”。如果删除渲染属性,则调用该操作。有人知道为什么会发生这种情况吗?在普通的JSF中,您可以通过将bean放在视图范围中来解决它。然而,我完全不知道春天是如何在这里发挥作用的。另见答案第5点:一位同事昨天遇到了同样的问题。这是由BalusC回答的第7点引起的:事先有一个ajax请求。这只是一个想法,因为问题描述听起来很熟悉。谢谢大家的时间和帮助。我花了一段时间才明白BalusC的链接是怎么说的。是的,这就是重点。在我的例子中,在用户单击“保存”按钮并提交之后,JSF重新检查了呈现的属性,该属性为“false”。因此,在完全不渲染面板及其子组件时,将忽略action属性。巴卢斯如果你能将你的评论作为答案,那么我会标记它。
@Service("articleManager")
public class ArticleManagerImpl implements ArticleManager{
// inject dao ...
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void saveArticle(Article article) {
articleDao.save(article);
}
}