爲什麼JSF不會將空值設置回列表(或數組)?如何使JSF將空值設置爲列表
一個例子:
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("testMB")
@Scope("view")
public class TestMB implements Serializable {
/**
*
*/
private static final long serialVersionUID = 2463416120592801345L;
private List<Double> doublesList;
private List<Integer> integersList;
private Double d = 123.456;
private Integer i = 987;
@PostConstruct
public void init() {
setDoublesList(new ArrayList<Double>());
setIntegersList(new ArrayList<Integer>());
for (int i = 0; i < 7; i++) {
getDoublesList().add(i + 0.123);
getIntegersList().add(i);
}
}
public List<Double> getDoublesList() {
return doublesList;
}
public void setDoublesList(List<Double> doublesList) {
this.doublesList = doublesList;
}
public List<Integer> getIntegersList() {
return integersList;
}
public void setIntegersList(List<Integer> integersList) {
this.integersList = integersList;
}
public Double getD() {
return d;
}
public void setD(Double d) {
this.d = d;
}
public Integer getI() {
return i;
}
public void setI(Integer i) {
this.i = i;
}
public void doSomething() {
System.out.println(getDoublesList());
System.out.println(getIntegersList());
System.out.println(d);
System.out.println(i);
}
}
和視圖...
<!DOCTYPE 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">
<f:view contentType="text/html">
<h:head>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type" />
</f:facet>
</h:head>
<h:body>
<h:form id="form">
<p:fieldset legend="Doubles List">
<ui:repeat varStatus="vs1" value="#{testMB.doublesList}">
#{v.index}
<p:inputText value="#{testMB.doublesList[vs1.index]}">
<f:convertNumber />
</p:inputText>
<br />
</ui:repeat>
</p:fieldset>
<p:fieldset legend="Integers List">
<ui:repeat varStatus="vs2" value="#{testMB.integersList}">
<p:inputText value="#{testMB.integersList[vs2.index]}">
<f:convertNumber integerOnly="true" />
</p:inputText>
<br />
</ui:repeat>
</p:fieldset>
Double:
<p:inputText value="#{testMB.d}">
<f:convertNumber />
</p:inputText>
<br />
<br />
Integer:
<p:inputText value="#{testMB.i}">
<f:convertNumber integerOnly="true" />
</p:inputText>
<br /><br /><br /><br />
<p:commandButton actionListener="#{testMB.doSomething}" update="form" />
</h:form>
</h:body>
</f:view>
</html>
如果列表中的字段設置爲空字符串,則列表不會更新與空值,就像預期的那樣。它仍然與以前一樣。
在web.xml中我有:
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.apache.el.parser.COERCE_TO_ZERO</param-name>
<param-value>false</param-value>
</context-param>
但如果我的testMB.d
或testMB.i
輸入文本值設置爲空字符串,那麼它的正確的託管bean設置爲null。
那麼,JSF,列表和空值有什麼問題?如何正確實施?
謝謝。
謝謝,但它發生的確如此。如果我將任何值更改爲與空字符串不同的值,它會更新列表中的值。問題是隻有列表忽略更新的空值。 – chuckedw 2014-11-24 18:21:38
啊好的。現在我明白你了! – Gaspar 2014-11-24 18:40:44
我已經做到了。但我用p:datalist代替ui:重複並且對我很好:
的 p:inputText的>
– Gaspar 2014-11-24 18:47:03