![](/img/trans.png)
[英]JSF Output not coming as expected by using commandLink, ViewScope in dataTable
[英]jsf - commandLink in a dataTable for delete row
我想在ah:dataTable中放入ah:commandLink来删除单行。 在这里,我有一个无效的代码,希望您能对我有所帮助。 这段代码甚至都没有调用我的delete方法。 h:dataTable的数据来自数据库。
XHTML
<h:form>
<div class="center">
<h:dataTable id="list" value="#{firstBackingBean.list}"
var="first" styleClass="center">
<!-- other columns (take data from firstBackingBean) -->
<h:column>
<f:facet name="header" />
<h:commandLink value="delete" action="#{secondBackingBean.delete}" >
<f:ajax execute="@form" render="list" />
<f:param name="id" value="#{first.id}"/>
</h:commandLink>
</h:column>
</h:dataTable>
</div>
</h:form>
FirstBackingBean
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class FirstBackingBean {
public void delete() {
System.out.println("\nBUTTON CLICKED\n");
}
}
SecondBackingBean
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class SecondBackingBean {
// ...
}
当UICommand
组件内的UIData
组件不调用其动作时,这通常意味着UIData
组件的value
属性后面的模型在显示表格和表的请求与随后提交表格的请求之间发生了不兼容的更改。形成。
如果支持bean是请求范围的,并且模型是基于请求范围的变量(例如request参数)进行了预初始化的,则可能会发生这种情况,表单提交请求中不再存在该变量。
将bean放置在视图范围内应该对其进行修复。
我有答案!
我有2个BackingBean,第一个BackingBean需要@SessionScoped批注,第二个BackingBean需要@ViewScoped批注。
非常感谢其他答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.