使用<;h:命令按钮>;在jsf中不能正常工作
当我试图用h:commandButton发送一些值时。。。我在bean中收到空值 我的xhtml代码是:使用<;h:命令按钮>;在jsf中不能正常工作,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,当我试图用h:commandButton发送一些值时。。。我在bean中收到空值 我的xhtml代码是: <p:commandButton action="#{favouriteAction.setFavourite}" value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}"> <f:setPropertyActionListener target="#{favouriteAction.n
<p:commandButton action="#{favouriteAction.setFavourite}" value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}">
<f:setPropertyActionListener target="#{favouriteAction.ngoID}" value="#{InsertDataDaoService.ngo_id}"></f:setPropertyActionListener>
</p:commandButton>
在控制台中,我不能得到任何异常,我的o/p是
非政府组织id:0
非政府组织id:0
这是空的,它不会被传递 是否检查过InsertDataDaoService.ngo_id的值不为空? 尝试将其替换为常量值。工作正常吗?在请求提交表单时评估
,而不是在请求显示表单时评估。因此,如果没有为该请求保留其值{InsertDataDaoService.ngo_id}
,那么它将失败
您基本上有两种选择:
{InsertDataDaoService.ngo_id}
。具体如何做到这一点取决于功能需求,这一点在问题中并不明确。但是一般来说,通过@ViewScoped
将{InsertDataDaoService}
bean放在视图范围中,并确保您没有在getter方法中执行任何业务工作就足够了@ManagedProperty
替换
<p:commandButton action="#{favouriteAction.setFavourite}" value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}">
<f:param name="ngoID" value="#{InsertDataDaoService.ngo_id}" />
</p:commandButton>
这样,在请求显示表单时将检索该值(并作为commandButton
的JavaScript助手函数的一部分内联),而不是在请求提交表单时进行评估FavoriteBean
请求的范围是否已确定?它至少应该是视图范围,以使这个rendered=“#{favoriteBean.favoriteButton}”
正常工作。这方面有很多问题。我在呈现命令按钮方面没有问题,即使在bean是请求作用域之后,它也能正确呈现。我的问题是使用commandbutton传递值……我在渲染的和按钮命令方面遇到了一些问题。按钮呈现为OK,但在还原视图阶段存在问题。在RestoreView上,JSF创建了新的请求bean,将FavoriteButton
设置为false,看起来按钮没有呈现。我们这里发生了很多事情。可能根本没有创建setPropertyActionListener
,因为它位于未渲染组件中。在更新模型阶段,favoriteButton
为true,并且按钮被正确渲染。但为时已晚:setPropertyActionListener
丢失。我甚至尝试删除渲染选项,但没有用。@Peter:已调用该操作。因此,呈现的
属性不是问题所在。
<p:commandButton action="#{favouriteAction.setFavourite}" value="Add as Favorite" rendered="#{favouriteBean.favouriteButton}">
<f:param name="ngoID" value="#{InsertDataDaoService.ngo_id}" />
</p:commandButton>
@ManagedProperty("#{param.ngoID}")
private Integer ngoID;