1.首先制作了一个简单的用户注册模块,其中对生日的格式必须是2017-08-03
由于程序不完善,输入了错误大的日期格式,出现了如下错误(没有结果为input的结果视图定义视图定义),因此需要在struts.xml中进行数据回显操作
2.相应的struts.xml配置如下
<struts>
<constant name="struts.devMode" value="true"/>
<package name="p1" extends="struts-default">
<action name="register" class="com.itheima.web.action.UserAction" method="register" >
<result type="redirect">/success.jsp</result><!-- 当注册成功之后重定向的结果视图 -->
<result name="exists">/message.jsp</result><!-- 当用户名已经存在之后,转向的结果视图 -->
<!-- 当出现问题之后,需要从哪来回哪去 -->
<result name="input">/register1.jsp</result>
</action>
</package>
</struts>
通过对input结果的配置,可以回到register1.jsp界面,但是数据都丢失了
3.在register1.jsp中进行表单标签使用
<%--导入struts2的标签库 --%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<head>
<title>用户注册,使用的是struts2的标签</title>
<s:head></s:head>
</head>
<body>
<s:actionerror/><%-- 动作错误 --%>
<s:fielderror /><%-- 字段错误 --%>
<%--struts2的form标签,它提供了和原始html表单标签几乎一致的属性
action:请求的地址。直接写动作名称。不用写contextPaht
method:请求的方式。在这里不用写。struts2的form表单默认就是post
enctype:表单编码的MIME类型
--%>
<s:form action="register.action">
<s:textfield name="username" label="用户名" requiredLabel="true" requiredPosition="left"/>
<s:password name="password" label="密码" showPassword="true"/>
<s:textfield name="birthday" label="生日"/>
<s:submit value="注册"/>
</s:form>
其中对于requiredLabel和showPassword的配置可以使数据回显。回显如下,发现提示信息是英文,不便于理解
4.中文错误提示的设置,需要创建一个User.properties,并运行如下配置
5.最终效果图如下