Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使JSF将空值设置到列表中_Jsf - Fatal编程技术网

如何使JSF将空值设置到列表中

如何使JSF将空值设置到列表中,jsf,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;

为什么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);
    }

}
import java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入javax.annotation.PostConstruct;
导入org.springframework.context.annotation.Scope;
导入org.springframework.stereotype.Component;
@组件(“testMB”)
@范围(“视图”)
公共类TestMB实现了可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=24634416120592801345L;
私人名单;
私有列表整数列表;
私人双d=123.456;
私有整数i=987;
@施工后
公共void init(){
setDoublesList(新的ArrayList());
setIntegerList(新的ArrayList());
对于(int i=0;i<7;i++){
getDoublesList().add(i+0.123);
getIntegersList().add(i);
}
}
公共列表getDoublesList(){
返回双重列表;
}
公共无效集合doublesList(列表doublesList){
this.doublesList=doublesList;
}
公共列表getIntegersList(){
返回整数列表;
}
public void setIntegersList(List integersList){
this.integersList=integersList;
}
公共双getD(){
返回d;
}
公共无效设置(双d){
这个。d=d;
}
公共整数getI(){
返回i;
}
公共void setI(整数i){
这个。i=i;
}
公共无效剂量测定法(){
System.out.println(getDoublesList());
System.out.println(getIntegersList());
系统输出打印ln(d);
系统输出打印LN(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>

#{v.index}


双重:

整数:




如果列表的字段设置为空字符串,则列表不会像预期的那样使用空值进行更新。它只是保持与以前相同的值

在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>

javax.faces.explait_EMPTY_STRING_SUBMITTED_VALUES_为_NULL
真的
org.apache.el.parser.convere_为零
假的
但是,如果我将
testMB.d
testMB.I
输入文本的值设置为空字符串,那么在托管bean中将其正确设置为null

那么,JSF、列表和空值有什么问题呢?如何正确实施这一点

谢谢。

试着这样做:

<p:commandButton action="#{testMB.doSomething}" update="form" />

我认为actionListener不会更改变量的值。

问题已解决

JSF升级。从
2.1.10
2.2.0

<dependency>
      <groupId>org.glassfish</groupId>
      <artifactId>javax.faces</artifactId>
      <version>2.2.0</version>            
</dependency>

玻璃鱼
javax.faces
2.2.0            

谢谢,但碰巧是这样。如果我将任何值更改为与空字符串不同的值,它将更新列表中的值。问题是,只有使用空值,列表才会忽略更新。啊,好的。现在我了解你了!我已经做了。但是我使用了p:datalist而不是ui:repeat,对我来说效果很好:
也可以尝试使用p:datalist。在这里,它不会更新任何值,即使它与空字符串不同。但不管怎样,这是什么#{vs2.i}?为什么是“我”?这里它给了我:
在java.math.BigDecimal类型上找不到属性“i”
我从testMB.integers得到的每个交互在vs2中列出一个对象。。。抱歉,这只是vs2,伙计。