检查JSF中的数值

时间:2011-02-23 11:38:54

标签: java jsf icefaces

<ice:inputText id="txt-tlmanage-quantity"
                value="#{createToolsOrderBean.toolsOrderVO.quantity}" tabindex="7"
                onkeydown="moveFocus(event, 'txt-tlmanage-unitprice')"
                style="margin-left: 4px;margin-bottom: 4px;">
            </ice:inputText>

当我通过调用createSomething方法按下按钮时,会提交此页面。但是这个方法在我输入字符串值时无法调用,因为quantity的类型为Integer.It会给出错误背面,但是怎么会知道,什么会出错?。

我使用<ice:message>,但它会在页面上提供长错误说明。

Error Meaasage : 

mainForm:txt-tlmanage-quantity: 'dsad' must be a number between -2147483648 and 2147483647 Example: 9346

有没有办法打印我自己的错误信息?

4 个答案:

答案 0 :(得分:1)

你应该在冰上添加一个整数转换器:inputText。这会将输入的字符串转换为整数。

<ice:inputText id="txt-tlmanage-quantity"
            value="#{createToolsOrderBean.toolsOrderVO.quantity}" tabindex="7"
            onkeydown="moveFocus(event, 'txt-tlmanage-unitprice')"
            style="margin-left: 4px;margin-bottom: 4px;">
    <f:converter converterId="javax.faces.Integer"/>
</ice:inputText>

如果您不输入整数,您仍会收到错误消息。要显示自定义消息而不是内置消息,您应该创建消息包。在其中一个包中创建属性文件,并添加自定义错误消息:

javax.faces.converter.IntegerConverter.INTEGER={2}: ''{0}'' must be a number consisting of one or more digits.
javax.faces.converter.IntegerConverter.INTEGER_detail={2}: ''{0}'' must be a number between -2147483648 and 2147483647 Example: {1}

将此属性文件作为资源包添加到faces-config.xml

<faces-config> 
     <application>
         <message-bundle>my.package.mypropertiesfile</message-bundle>
     </application> 
</faces-config>

答案 1 :(得分:0)

首先,编辑并粘贴错误,它将帮助我们为您提供帮助。

如果您想显示自定义错误,请使用FacesMessage

示例:

public void testingErrorMessages() {

   try {
      throw new Exception("");
   } catch(Exception exc) {
      FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Error message here!");
      FacesContext.getCurrentInstance().addMessage(null, facesMsg);
   }
}

只需添加它并更新<ice:message>即可。 RichFaces reRender和PrimeFaces update,但我不知道它在IceFaces中是如何运作的。

答案 2 :(得分:0)

我认为你的问题是他没有告诉你,你可能不会使用任何字母?

你可以通过使用例如转换器。

只需将以下代码段添加到inputText属性:

converter="javax.faces.Integer"

当你现在提交时,你会收到错误。如果要创建自定义错误消息,请使用验证程序。你会找到一个很好的教程here

答案 3 :(得分:0)

在jsf中使用converter属性仅接受数值

如果要在jsf中打印自己的错误消息,则可以使用converterMessage属性。

<h:inputText id="textCreditCardNumberId" label="CreditCard Number"
converter="javax.faces.Integer" converterMessage="Please enter numeric only" 
maxlength="16" styleClass="controlfont" 
value="#{OnlineReservationBean.creditCardNumber}"></h:inputText>