为什么struts.xml文件中要增加input视图?

 
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
	"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<!-- 配置Struts 2的包空间 -->
	<package name="lee" extends="struts-default">
		<!-- 定义处理用户请求的Action -->
		<action name="login" class="lee.LoginAction">
			<!-- 配置名为input的逻辑视图,当校验失败后转入该逻辑视图 -->
			<result name="input">/input.jsp</result>
			<!-- 配置名为success的逻辑视图 -->
			<result name="success">/welcome.jsp</result> 
		</action>
		<action name="">
			<result>.</result> 
		</action>
	</package>
</struts>


如上,为啥要给input增加视图呢?不增加的话可能会报错:找不到源文件。这是为啥呢?

 话说在Struts中类型转换的错误需要有一个名叫conversionError的拦截器来做,这个拦截器被注册在默认的拦截器栈中。Struts框架中的默认配置文件struts-default.xml文件:

<interceptor-ref name="conversionError" />


在上面默认的拦截器中已经包括了conversionError的引用,如果Struts 2的类型转换器执行类型转换时出现错误,该拦截器将负责将对应的错误封装成表单域错误(fieldError),并将这些错误信息放入到ActionContext中,然后会转入名为input的逻辑视图。

至此:应该为该Action增加名为input的逻辑视图定义。

为了在input视图对应的页面中输入转换的错误,只需要在页面中使用<s:fielderror/>标签即可输出该类型转换错误信息。 至于如何使用,举个小例子:

jsp页面中:

<s:fielderror></s:fielderror> 

Action中:

   public void validate() {
        if( ! "simple".equals(loginName)){
            addFieldError("loginName", "登录名不正确!");
        }else if(! "simple".equals(password)){
            addFieldError("password", "密码不正确!");
        }
    } 


 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值