[英]p:commandButton inside p:pdataTable/p:dataGrid/ui:repeat does not invoke method
[英]update ui:repeat in p:commandButton
我有一個復合組件,可以使用ui:repeat來顯示一個列表。
以下代碼:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<h:panelGroup layout="block" id="panel_topic" styleClass="panel_topic">
<div class="title_topic">#{msg['tages.title']}</div>
<ui:repeat value="#{tages._texts}" var="txt">
<div class="tage">
<p:commandLink type="button" styleClass="close" aria-hidden="true"
action="#{tages.removeText}" update="panel_topic">
<f:setPropertyActionListener target="#{tages._tar}" value="#{txt}"/>
<h:outputText escape="false" value="&times;"/>
</p:commandLink>
<h:inputText id="text" styleClass="text" value="#{txt.text}"></h:inputText>
<div class="color_item" style="background-color:#{txt.color}"></div>
</div>
</ui:repeat>
<p:commandButton id="add_item" styleClass="add_item" actionListener="#{tages.addsTextss}" value="#{msg['tages.addItem']}"
update="panel_topic" >
</p:commandButton>
</h:panelGroup>
</composite:implementation>
我的塔格斯豆:
@ManagedBean(name = "tages")
@SessionScoped
public class Tages implements Serializable {
private int _size = 0;
private List<Tage> _texts = null;
private Tage _tar = null;
private String[] _colors = new String[]{"red", "blue", "pink"};
public Tages() {
}
@PostConstruct
public void init() {
_texts = new ArrayList<Tage>();
}
public void addsTextss() {
Tage _tage = new Tage();
_tage.setColor(_colors[_size]);
_tage.setId(++_size);
get_texts().add(_tage);
}
public void removeText() {
if (_size - 1 <= get_tar().getId()) {
--_size;
}
get_texts().remove(get_tar());
}
public List<Tage> get_texts() {
return _texts;
}
public void set_texts(List<Tage> _texts) {
this._texts = _texts;
}
public int get_size() {
return _size;
}
public void set_size(int _size) {
this._size = _size;
}
public Tage get_tar() {
return _tar;
}
public void set_tar(Tage _tar) {
this._tar = _tar;
}
}
我的老豆:
public class Tage implements Serializable {
private int id=0;
private String text="";
private String color=null;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
當單擊p:commandButton(add_item)時,不會更新ui:repeat。
如果用c:forEach更新權限替換ui:repeat,但組件未保存狀態。
什么方式更新ui:repeat?
我在使用數據表之前有相同的錯誤並解決它並解決它我自己檢查下面的鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.