我有一個<ui:repeat>
迭代通過List<String>
並創建一個<p:commandButton>
與<p:lightBox>
當前字符串的值。
但是,當我將widgetVar
添加到我的<p:lightBox>
的屬性時,<p:commandButton>
的值始終是上次迭代的字符串。Primefaces燈箱的widgetVar干擾UI:重複
有人可以解釋發生了什麼,(因爲我需要widgetVar
)也許指出一個解決方案?
這是我的HTML:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head />
<h:body>
<ui:repeat var="thing" value="#{bugBean.things}">
<p:lightBox widgetVar="whatever">
<h:outputLink>
<h:outputText value="#{thing}" />
</h:outputLink>
<f:facet name="inline">
<h:form>
<p:commandButton action="#{bugBean.writeThing(thing)}"
value="#{thing}" />
</h:form>
</f:facet>
</p:lightBox>
</ui:repeat>
</h:body>
</html>
這是支持bean:
package huhu.main.managebean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class BugBean implements Serializable {
private static final long serialVersionUID = 1L;
List<String> things = new ArrayList<String>();
public BugBean(){
things.add("First");
things.add("Second");
things.add("Third");
}
public void writeThing(String thing){
System.out.println(thing);
}
public List<String> getThings() {
return things;
}
public void setThings(List<String> things) {
this.things = things;
}
}
太棒了!感謝您的啓發性答案並質疑我的設計。 ;)當然,只更新一個內容的燈箱會更有效率。我會這樣做。我被打開燈箱的鏈接已經在lightbox標籤內的事實激怒了 - 現在我意識到這不是一個障礙。還有一個問題:我在哪裏可以(重新)閱讀你剛剛就我的問題向我指出的內容? – Lester
不客氣。我只觀察了生成的HTML代碼(我只是通過查看JSF代碼,從頭至尾知道這個特定的情況)。 – BalusC