相关疑难解决方法(0)

如何以编程方式设置-Dorg.apache.el.parser.COERCE_TO_ZERO = false

这个问题类似于:

jsf:绑定到UI中的inputtext的整数属性在提交时设置为零

但我对解决方案并不完全满意.上下文是相同的:我有一个需要Integer值的Web表单.如果文本框留空,我希望我的整数字段为'null',而EL解析器会自动将我的id字段设置为'0'.

我可以通过在本地Tomcat VM中设置JVM参数来解决问题:

-Dorg.apache.el.parser.COERCE_TO_ZERO = FALSE

但是,这对我们客户的机器不起作用.是否可以在"代码内"设置/更改此JVM参数.

更新:我发现这是请求,但如果其他人有任何其他解决方法,我也想听到.

https://issues.apache.org/bugzilla/show_bug.cgi?id=48813

更新2:我无法将值从"0"更改为"null",因为我的应用程序应将"0"视为实际ID.所以我需要在运行时知道id文本框是否为空.

jsf tomcat el jvm-arguments managed-bean

25
推荐指数
1
解决办法
2万
查看次数

h:绑定到String属性的inputText是提交空字符串而不是null

我在Tomcat上有一个JSF 2.0应用程序,有很多<h:inputText>字段可以在我的数据库中输入数据.某些字段不是必需的.

<h:inputText value="#{registerBean.user.phoneNumber}" id="phoneNumber">
    <f:validateLength maximum="20" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)

当用户将此字段留空时,JSF设置空字符串""而不是null.

如何在不检查每个String的情况下修复此行为

if (string.equals("")) { string = null; }
Run Code Online (Sandbox Code Playgroud)

string null jsf tomcat el

20
推荐指数
1
解决办法
3万
查看次数

在Mojarra JSF 2.1中解决错误的INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL

我知道在JSF2中有很多关于将空字符串转换为null的帖子.通常的处方是将以下内容添加到web.xml中.

<context-param>
  <description>Does not appear to work</description>
  <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
  <param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

这根本不起作用 - 根本没有.然后我创建了一个自定义字符串转换器来测试它是否可行.我明确地将它作为转换器添加到我的inputText中(否则它在空白时不会触发).

当INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为true时,转换器接收null,输入文本的setter仍然接收"".

当INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL设置为false(或注释掉)时,转换器接收""并且输入文本的setter接收""(即使在转换器返回null之后).

@FacesConverter(forClass=java.lang.String.class, value="emptyStringToNull")
public class StringConverter implements Converter, Serializable {
    private static final long serialVersionUID = -1121162636180944948L;
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value == null || value.trim().isEmpty()) {
            return null;
        }
        return value;
    }

    public String getAsString(FacesContext context, UIComponent component, Object object) {
    if (object == null)
        return null;

    return object.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过(无济于事)在getAsObject中显式设置组件提交的值:

if (component instanceof EditableValueHolder)
    ((EditableValueHolder) component).setSubmittedValue(null);
Run Code Online (Sandbox Code Playgroud)

我正在使用JBoss6(6.1的快照)和JSF …

jsf-2 mojarra jboss6.x

11
推荐指数
1
解决办法
8225
查看次数

整数获取默认值0,其中Java中需要为NULL

我的要求看起来很简单,但我觉得我在代码中做错了.

我只需要在没有从UI的InputText字段传递任何内容时在Oracle数据库中插入"null".

PaymantSpecFormPage.xhtml

<h:inputText id="startWeek" value="#{flowScope.paymentSpecVO.paymStartWk}" styleClass="inputTypeForm" maxlength="4"/>
Run Code Online (Sandbox Code Playgroud)

PaymentSpecVO.java

public class PaymentSpecVO extends BaseVO<PaymentSpec> {
   private Integer paymStartWk;

   public Integer getPaymStartWk() {
      return paymStartWk;
   }
   public void setPaymStartWk(Integer paymStartWk) {
      this.paymStartWk = paymStartWk;
   }
}
Run Code Online (Sandbox Code Playgroud)

在我的数据库表中

COLUMN_NAME      DATA_TYPE    NULLABLE    DEFAULT_VALUE
------------     ---------    --------    -------------
PAYM_START_WK    NUMBER(4,0)    Yes             null
Run Code Online (Sandbox Code Playgroud)

当我在inputText中没有输入任何内容时,那么在表格中输入0而不是null,这在我的业务逻辑中有不同的含义,请帮我做必要的代码更改.

jsf integer

11
推荐指数
1
解决办法
1万
查看次数

jsf:绑定到UI中的inputtext的整数属性在提交时设置为零

我将bean绑定到jsp页面中的inputtext UI元素的整数属性.

最初在渲染它们时,此整数属性的默认值为null.

现在,当我在不更改此inputtext字段的情况下提交表单时,即使ui文本字段为空,此字段也会在bean中设置为整数值零.

因为我想跟踪字段的更改并仅更新配置文件中更改的那些字段,但这给我带来了问题,因为它导致对所有整数字段的更新.

我正在使用jsf 1.2

jsf form-submit

9
推荐指数
2
解决办法
1万
查看次数

如何使数字输入区域最初为空而不是0或0.00?

我有一个输入位置应该得到一个数字.我希望它显示为空.但是,当我运行我的程序时,我默认为0或0.00.我怎么能把它弄空?

jsf numbers input zero

7
推荐指数
1
解决办法
8657
查看次数

h:selectOneRadio映射到布尔值,将nulls转换为false

我有一个h:selectOneRadio组件,我已映射到Boolean支持bean中的(不是布尔值).加载时,单选按钮没有默认选择选项,单选按钮不是必填字段.

示例代码:

JSF页面摘录:

<h:form>
<h:selectOneRadio value="#{pagecode.test}">
    <f:selectItem itemValue="#{true}" itemLabel="Yes"/>
    <f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneRadio>
<h:commandButton value="Save" action="#{pagecode.save}"/>
</h:form> 
Run Code Online (Sandbox Code Playgroud)

支持Java页面代码:

package pagecode;

public class JSFBooleanTestView extends PageCodeBase {

    protected Boolean test;

    public Boolean getTest() {
        return test;
    }

    public void setTest(Boolean test) {
        this.test = test;
    } 

    public String save() {
        return "JSFBooleanTestView";
    }
}
Run Code Online (Sandbox Code Playgroud)

faces-config.xml摘录:

<managed-bean>
    <managed-bean-name>pagecode</managed-bean-name>
    <managed-bean-class>pagecode.JSFBooleanTestView</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)

由于test没有默认值,单选按钮开始未选中.由于不需要该字段,我的期望是在没有选中单选按钮的情况下按下"保存"按钮会导致测试为空.相反,测试被指定为false.

我尝试过的不同选项没有效果:

  1. 设置 h:selectOneRadio required="false"

  2. 添加到web.xml:

    <context-param>
         <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
         <param-value>true</param-value>
     </context-param>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 添加到web.xml:

     <context-param>
         <param-name>org.apache.el.parser.COERCE_TO_ZERO</param-name>
         <param-value>false</param-value>
     </context-param> …
    Run Code Online (Sandbox Code Playgroud)

null jsf boolean jsf-2 selectoneradio

1
推荐指数
1
解决办法
3651
查看次数