【发布时间】:2014-06-20 08:19:09
【问题描述】:
主要问题
工作流程应该是这样的:如果输入的不是数字的String,首先要通过异常拦截器,通过param拦截器的时候,在转换成int类型的时候就不行了使用Integer.parseInt 会发生异常;不应该将该异常(即NumberFormatException)推入值堆栈吗?为什么不显示 NumberFormatException 并显示结果,即使不应该打印结果?
附带问题
每当我在表单中添加一个字母时,它都会变为零......?为什么会这样?
index.jsp
<%@ taglib uri="/struts-tags" prefix="s"%>
<s:form action="divide">
<s:textfield name="number1" label="number1"/>
<s:textfield name="number2" label="number2"/>
<s:submit value="divide"/>
</s:form>
divide.java
package actions;
public class divide {
int number1,number2,result;
public String execute() throws Exception
{
result=number1/number2;
return "success";
}
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public int getNumber2() {
return number2;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public int getResult() {
return result;
}
}
result.jsp
<%@taglib uri="/struts-tags" prefix="s" %>
<b>
the result of division is
<s:property value="result"/>
</b>
<jsp:include page="index.jsp"></jsp:include>
处理程序jsp
<%@taglib uri="/struts-tags" prefix="s"%>
<b>
following exception occured during the processing
<s:property value="exception"/>
</b>
<jsp:include page="index.jsp"/>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="yo" extends="struts-default">
<action name="divide" class="actions.divide">
<exception-mapping result="error" exception="Exception"/>
<result name="success">/result.jsp</result>
<result name="error">/handler.jsp</result>
</action>
</package>
</struts>
【问题讨论】:
-
这是什么意思:每当我添加一个字母时
-
意思是说,在输入字段中,如果我写的是b或c,而不是数字,它应该抛出一个异常,但它会将其视为零
-
定义输入结果,因为您遇到了验证错误。
标签: java validation struts2 casting type-conversion