我想为输入字段创建验证器,以检查值并在插入的值不是int时发送错误消息。serverError:类java.lang.ClassCastException java.lang.Integer不能转换为java.lang.String
豆:
public class PricingCalculatorValidator implements Validator
{
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException
{
// Cast the value of the entered input to String.
String input = (String) value;
// Check if they both are filled in.
if (input == null || input.isEmpty())
{
return; // Let required="true" do its job.
}
// Compare the input with the confirm input.
if (containsDigit(input))
{
throw new ValidatorException(new FacesMessage("Value is not number."));
}
}
public final boolean containsDigit(String s)
{
boolean containsDigit = false;
if (s != null && !s.isEmpty())
{
for (char c : s.toCharArray())
{
if (containsDigit = Character.isDigit(c))
{
break;
}
}
}
return containsDigit;
}
}
什么是投插入值的正确方法?现在我得到例外
serverError: class java.lang.ClassCastException java.lang.Integer cannot be cast to java.lang.String
我认为正确的方法是使用转换器。例如,你可以使用'f:convertNumber'。 – Diego
看起来像您的值参数即将到来的类型'整数'。在这种情况下'String input =(String)value;'这不起作用。如果你想把它转换为'String',你可以尝试'value.toString();'。这会给你'Integer'值的'String'表示。 –