`

Struts的<html:javascript>

阅读更多
Struts的<html:javascript>标签能够在JSP网页中生成在客户端执行的JavaScript脚本。使用方法如下:<html:javascript formName="checkoutForm">    <html:javascript>标签的formName属性指定需要验证的表单的名字。该标签能够访问为表单配置的验证规则包含的<javascript>元素,把它包含的脚本写到JSP网页中,生成validateXXX()的函数,XXX代表表单的名字。     当用户在表单上按下提交按钮后,就会调用<html:javascript>标签生成的JavaScript脚本的函数并执行。验证失败,不会提交到服务器端。

学习一下struts的验证

(说明)这里采用了最新版本struts-1.2.7,是在struts-blank的基础上演示的,为了以后的学习和参考用。

一、在对应的Form Baens中重载validate方法
在struts-config.xml文件中,action节点下有"validate"这样一个属性。在struts框架中,默认属性是validate="&shy;true"。所以如果想通过Form
Baens的重载validate方法来验证数据的话,可以不用理会这一点。题外话:如果你在struts-config.xml文件中,设置 validate&shy;="false"的话,validate方法将不起作用。这一点同样对Validate框架来验证数据起作用。


二、通过Validate框架来验证数据
1、首先在struts-config.xml文件中,追加如下代码:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"


value="/WEB-INF/validator-rules.xml,/WEB-INF/validations.xml"/>
<set-property property="stopOnFirstError" value="false"/>
</plug-in>


2、然后编写自己的Form Baens,有两种方式可供选择:

写的formBaen需要继承ValidatorForm,而不是第一种方法中的ActionForm
public class UserForm extends ValidatorForm {
private String userId = "";
private String password = "";


public void setUserId(String userId) {
this.userId = userId;
}


public String getUserId() {
return userId;
}


。。。。。。


然后配置struts-config文件
<form-bean name="userForm"
type="com.wxhx.presentation.UserForm"/>


② 配置struts-config文件
<form-beans>
<form-bean name=" userForm"
type="org.apache.struts.validator.DynaValidatorForm">
<form-property name=" userId" type="java.lang.String"/>
<form-property name="password"
type="java.lang.String"/>
</form-bean>


</form-beans>


3、配置validation.xml文件
<formset>
<form name="userForm"> ----这里的userForm是Form
Beans的名字
<field property="userId" depends="required">
<arg key="userForm.userId"/>
</field>
<field property="password" depends="required,mask">
<arg key="userForm.password"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9a-zA-Z]*$</var-value>
</var>
</field>
</form>
</formset>
其中key="userForm.userId"和key="userForm.password"需要在资源文件中配置
这里需要说明一点,例如:<arg key="userForm.password"
resource="false"/>


如果多了resource="false"这句话,那么它不会再从资源文件中去取,而是直接用key值来表示。


以上是通过validatorForm- or
DynaValidatorForm来实现Validate验证的


(附)


现在有这样一个问题,Form
Beans可以被多个Action应用,而每个Action可能需要的验证字段都不一样。而在validation.xml中配置的验证方式(如<form
name="userForm">)是对这个Form
Beans进行的。这样的话,如何来验证呢?


你的Form
Beans可以继承ValidatorActionForm(当然可以直接配置DynaValidatorActionForm)。如下所示:
public class UserForm extends ValidatorActionForm {
...



}


或是
<form-bean name=" userForm "
type="org.apache.struts.validator.DynaValidatorActionForm">
...
</form-bean>

struts-config文件配置如下:
<action-mappings>
<action path="/technology/createUser"
type="com.wxhx.minihr.CreateUserAction"
name="userForm"/>
<action path="/technology/editUser"
type="com.wxhx.minihr.EditUserAction"
name="userForm"/>
</action-mappings>


validation.xml文件配置如下:
<formset>
<form name="/technology/ createUser
">----这里的采用的是action的path路径
<field property="city" depends="required">
<arg0 key="prompt.city"/>
</field>
</form>


<form name="/technology/editUser ">
<field property="state" depends="required">
<arg0 key="prompt.state"/>
</field>
</form>
</formset>


关于validator-rules.xml,定义了常用的一些规则,当然也可以自己追加新的规则。
这里经常会看到msg="errors.required"字样,也是通过资源文件中配置的,默认的资源如下:


# -- validator --
errors.invalid={0} is invalid.
errors.maxlength={0} can not be greater than {1} characters.
errors.minlength={0} can not be less than {1} characters.
errors.range={0} is not in the range {1} through {2}.
errors.required={0} is required.
errors.byte={0} must be an byte.
errors.date={0} is not a date.
errors.double={0} must be an double.
errors.float={0} must be an float.
errors.integer={0} must be an integer.
errors.long={0} must be an long.
errors.short={0} must be an short.
errors.creditcard={0} is not a valid credit card number.
errors.email={0} is an invalid e-mail address.
这在struts-blank的例子中会有,在开发项目的时候,注意这些默认资源


关于自己定义规则,以后再作研究


三、结合上面的两种验证
如果即在Form
Beans中重载了validate方法,又启用了Validate框架,那会是什么效果呢?
由于要启用Validate框架,Form
Beans需要继承ValidatorForm,查看ValidatorForm的源代码,发现validate方法已经作了处理(真是为Validate框架&shy;所服务的)。
那么在Form
Beans中重载了validate方法的话,就会覆盖原有ValidatorForm中对应的功能,所以如果想一起用的话,需要在Form
Beans的validate方法中调用errors = super.validate(mapping,
request);这句代码是启用Validate框架所要做的工作,然后可以判断errors再作下一步的处理。


当然也可以先做Form
Beans中的validate方法,然后启用Validate框架,要看具体情况而定。


四、启用客户端验证
也是结合validation.xml来验证的,我把validation.xml相关的内容在复制下来,便于看清楚:
<formset>
<form name="userForm"> ----这里的userForm是Form
Beans的名字
<field property="userId" depends="required">
<arg key="userForm.userId"/>
</field>
<field property="password" depends="required,mask">
<arg key="userForm.password"/>
<var>
<var-name>mask</var-name>
<var-value>^[0-9a-zA-Z]*$</var-value>
</var>
</field>
</form>
</formset>


①在需要客户端验证的jsp中加上这么一句<html:javascript
formName=" userForm "/>
其中formName就是validation.xml中<form
name="userForm">所对应的内容


②在<html:form中追加一个属性onsubmit="return
validateUserForm(this);"


它的语法为:return validate +
struts-config.xml中定义的form-bean名称 + (this);


③追加<scriptlanguage="Javascript1.1"
src="staticJavascript.jsp"></script>


staticJavascript.jsp的内容为:


<%@ page language="java" %>


<%-- set document type to Javascript(addresses a bug in Netscape
according to a web resource --%>
<%@ page contentType="application/x-javascript" %>


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>


<html:javascript dynamicJavascript="false" staticJavascript="true"/>


这只是一种方式,还有其他简洁的(具体为啥这样,不是很明白,希望得到高人指点)
比如:追加onsubmit="return validateUserForm(this);"
<html:javascript formName="userForm" staticJavascript="true"/>
分享到:
评论
1 楼 jie523314 2010-08-19  
引用
[img][/img][url][/url][flash=200,200][/flash]

相关推荐

    struts1-html标签

    `&lt;html:form&gt;`是Struts1框架中用于创建HTML表单的标签。它为开发者提供了更多的控制选项,使得表单创建更为灵活且方便。 **基本用法**: - **必需属性**:`action`,用于指定表单提交的目标URL。如果未设置此属性,...

    struts-html标签

    8. `&lt;html:reset&gt;`和`&lt;html:button&gt;`标签:前者创建重置按钮,后者创建自定义功能的按钮,可通过`onclick`事件绑定JavaScript函数。 Struts HTML标签库通过这种方式将业务逻辑和表现层分离,使得代码更加结构化,...

    struts 1.2 跳转后css或js 无效解决方法

    &lt;script language="javascript" type="text/javascript" src="&lt;c:url value='/common/js/common.js' /&gt;"&gt;&lt;/script&gt; ``` 2. **优化服务器配置**: - 检查服务器的虚拟目录设置,确保所有的静态资源(如CSS、JS)...

    Struts1.x HTML标签库

    与HTML的`&lt;form&gt;`标签不同,`&lt;html:form&gt;`的`action`属性需要指定一个Struts的动作(Action),这个动作必须在`struts-config.xml`配置文件中定义。否则,页面在尝试提交时会抛出异常,导致JSP页面无法正常工作。...

    struts logic:iterater 换行

    在探讨“struts logic:iterater换行”的知识点时,我们首先需要理解Struts框架以及其内嵌的逻辑标签库(Logic Tag Library)中的`&lt;logic:iterate&gt;`标签的使用方式,尤其是如何在迭代过程中实现换行效果。下面将详细...

    对 Struts 2 的 s: iterator tag 中嵌套的所有 s: checkbox 进行全选、反选操作

    在`&lt;s:iterator&gt;`内部使用`&lt;s:checkbox&gt;`,可以方便地为数据集中的每个条目生成一个复选框。 全选和反选功能的实现通常涉及以下几个步骤: 1. **创建复选框**:首先,在JSP页面上,使用`s:iterator`遍历数据集,并...

    struts2标签库

    在使用Struts2标签库前,需要在JSP页面中引入相应的标签库,通常使用`&lt;%@taglib&gt;`指令,如`&lt;%@taglib uri="/struts-tags" prefix="s"%&gt;`。对于Servlet2.3之前的版本,可能还需要在web.xml中配置标签库的定义,但...

    Struts2之struts2标签库了解和使用案例struts025

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; &lt;h1&gt;用户列表&lt;/h1&gt; &lt;s:iterator value="users"&gt; &lt;div&gt; &lt;s:property value="name"/&gt;&nbsp;|&nbsp; &lt;s:property value="email"/&gt;&nbsp;|&nbsp; &lt;a href="&lt;s:url ...

    Struts1标签手册

    HTML Tags库则包含了用于创建Struts输入表单的标签,如`&lt;html:base&gt;`, `&lt;html:cancel&gt;`, `&lt;html:select&gt;`, `&lt;html:checkbox&gt;`, `&lt;html:radio&gt;`, `&lt;html:multibox&gt;`, `&lt;html:link&gt;`, `&lt;html:errors&gt;`, `...

    struts1.2标签实例

    &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;登录页面&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;s:form action="login" method="post"&gt; &lt;s:textfield name="username" label="用户名" /&gt; &lt;s:password ...

    struts1五大标签库

    它包括如`&lt;html:form&gt;`、`&lt;html:text&gt;`、`&lt;html:password&gt;`、`&lt;html:submit&gt;`等标签,帮助开发者创建和管理表单数据。例如,`&lt;html:form&gt;`用于定义一个HTML表单,而`&lt;html:text&gt;`则用于创建输入字段,这些标签可以...

    struts1 标签手册

    4. 此外,HTML标签库还包含许多其他常用的标签,如`&lt;html:form&gt;`用于创建表单,`&lt;html:text&gt;`、`&lt;html:password&gt;`、`&lt;html:textarea&gt;`、`&lt;html:radio&gt;`和`&lt;html:checkbox&gt;`用于创建输入字段,`&lt;html:link&gt;`用于创建...

    struts2标签详解与实例

    例如,使用`&lt;s:head&gt;`标签引入CSS和JavaScript资源,`&lt;s:fielderror&gt;`显示字段验证错误,`&lt;s:messages&gt;`展示全局消息。 四、实例解析 以下是一个简单的用户注册表单的示例: ```jsp &lt;%@ taglib prefix="s" uri="/...

    struts2.0常用标签文档

    2. **显示文本**:`&lt;s:textfield&gt;`用于创建输入字段,`&lt;s:textarea&gt;`用于创建多行文本输入框,它们都支持各种HTML属性,如name、id等,以及Struts2特有的验证规则。 3. **表单处理**:`&lt;s:form&gt;`标签用于创建HTML...

    struts2的详细资料

    文件名“struts2_05_03_controlTag”可能涵盖了Struts2控制标签的使用,这些标签包括导航和流程控制标签,如 `&lt;s:if&gt;`, `&lt;s:else&gt;`, `&lt;s:switch&gt;`, `&lt;s:iterator&gt;`等,它们帮助开发者根据条件执行不同的操作或循环...

    struts2标签的使用代码

    Struts2提供了 `&lt;s:table&gt;`标签,可以方便地创建HTML表格。例如,展示用户数据的表格: ```jsp &lt;s:table list="users"&gt; &lt;s:column label="ID"&gt;id&lt;/s:column&gt; &lt;s:column label="Name"&gt;name&lt;/s:column&gt; &lt;s:column ...

    Struts2标签库详解

    Struts2的UI标签还支持其他一些功能,如验证(通过`&lt;s:fielderror&gt;`和`&lt;s:errors&gt;`展示错误信息)、国际化(使用`&lt;s:text&gt;`和`s:resourcebundle`处理多语言)和主题样式(通过`cssClass`属性应用样式)。此外,...

    struts2的标签应用

    在Struts2中,标签库是其核心特性之一,它们为开发者提供了便利的方式来构建动态用户界面,无需深入HTML和JavaScript的底层细节。在本篇中,我们将深入探讨Struts2的标签应用及其在实际开发中的使用。 首先,了解...

    Struts2标签集锦(附Struts2标签详解word文档)

    7. **脚本标签(Scripting Tags)**:允许在JSP中嵌入JavaScript或Groovy等脚本语言,如`&lt;s:script&gt;`。 8. **主题和皮肤标签(Theme and Skin Tags)**:Struts2提供了多种主题和皮肤,通过`&lt;s:set&gt;`和`&lt;s:theme&gt;`...

    struts标签

    tags"%&gt;` 和 `&lt;%@ taglib prefix="sx" uri="/struts-dojo-tags"%&gt;`:这两行代码引入了Struts2的标签库,`s`前缀用于标准Struts2标签,而`sx`前缀则用于Struts2的Dojo扩展标签,提供了一些与JavaScript库Dojo相关的...

Global site tag (gtag.js) - Google Analytics