<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>table选中的行以指定颜色高亮显示</title>
    <script type="text/javascript">
        function IniEvent() {
            var tbl = document.getElementById("tblMain");
            var trs = tbl.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                trs[i].onclick = TrOnClick;
            }
        }
        function TrOnClick() {
            var tbl = document.getElementById("tblMain");
            var trs = tbl.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                if (trs[i] == this) {             //判断是不是当前选择的行
                    trs[i].style.background = "yellow";
                }
                else {
                    trs[i].style.background = "white";
                }
            }
        }
    </script>
</head>
<body onload="IniEvent()">
    <table id="tblMain" border="1">
        <tr>
            <td>1</td>
            <td>三星</td>
            <td>AA</td>
        </tr>
        <tr>
            <td>2</td>
            <td>Norkia</td>
            <td>BB</td>
        </tr>
        <tr>
            <td>3</td>
            <td>苹果</td>
            <td>CC</td>
        </tr>
        <tr>
            <td>4</td>
            <td>联想</td>
            <td>DD</td>
        </tr>
    </table>
</body>
</html>
</html>

解决方案 »

  1.   

    我也写了个http://blog.csdn.net/chenghui0317/article/details/7882797
      

  2.   

    Action配置中一定要设置input返回页面添加验证只要创建验证的xml文件1.创建xml文件名
    验证Action中全部方法
    在Action同包下,创建:Action类名-validation.xml
    如:ValidateAction创建ValidateAction-validation.xml验证Action中单个方法
    <!-- 每个方法单独配置一个Action -->
    <!-- 在Action同包下,创建:Action类名-action方法配置名称-validation.xml -->
    <action name="validateAdd" class="com.struts2.validator.ValidateAction" method="add">
    <!-- 要创建ValidateAction-validateAdd-validation.xml --><!-- 使用通配符配置 -->
    <!-- 在Action同包下,创建:Action类名-action方法对应的名称-validation.xml -->
    <action name="validate_*" class="com.struts2.validator.ValidateAction" method="{1}">
    <!-- 要创建ValidateAction-validate_add-validation.xml,validate_add为访问这个action方法的路径 -->
    注意事项
    注意:
    1.要验证的方法不能叫input.
    2.这样配置在form表单中要在<s:form action="validate_add">中action写好名称,
    不能写action="validate_",然后<s:submit value="提交"method="add" /> 
    这样会找不到对应的配置文件,跳过验证.
    3.如果验证出错,返回input页面时,那些存在ValueStack中的值会丢失,可以将Action实现Preparable接口,
    然后prepare()方法里初始化添加页面需要的值.
    4.如果使用Preparable接口,必须在action配置中添加<interceptor-ref name="paramsPrepareParamsStack" />.
    这样prepare()才能得到form提交的参数.
    2.创建xml内容
    <!DOCTYPE validators PUBLIC  "-//OpenSymphony Group//XWork Validator 1.0.2//EN"  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators> 
            <!-- 要验证的字段名称 -->
            <!-- 要验证Action中UserBean的id字段,name="userBean.id"(userBean为Action中的变量名) -->
        <field name="mail">
            <!-- type要验证的类型,short-circuit(默认false),true含义,如果当前验证失败了,下面的验证就不执行了.如requiredstring失败了,email就不验证了. -->
            <!-- field-validator下面可以有多个param元素,但是最多只能有一个message -->
            <field-validator type="requiredstring">
                <param name="trim">true</param>
                <message>Please enter a mail</message>
            </field-validator>
            <field-validator type="email">
                    <message>
                            Invalid MAIL
                    </message>
            </field-validator>
        </field>
    </validators>
      

  3.   

    Struts内建验证程序(type的值)
    required
    保证字段的值不是空值null.空字符串不是空值null.<field name="userName">
        <field-validator type="required">
            <message>Please enter a user name</message>
        </field-validator>
    </field>
    requiredstring
    保证字段不是空值null,也不是空白(empty).
    param:trim(boolean) ->true->去除前后空格<field name="userName">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>Please enter a user name</message>
        </field-validator>
    </field>
    <field name="password">
        <field-validator type="requiredstring">
            <param name="trim">false</param>
            <message>Please enter a password</message>
        </field-validator>
    </field>
    int
    验证字段值是否可以转换为一个整数.
    param: min(int);max(int) <field name="yeaar">
            <field-validator type="int">
                <param name="min">1999</param>
                 <param name="max">2010</param>
                <message>year:1999-2010</message>
            </field-validator>
    </field>
    date
    验证给定日期字段的值是否在一个给定的范围内.
    param:max(date);min(date) <field name="borthday">
            <field-validator type="int">
                <!-- 格式取决于当前地理时区 -->
                <param name="min">1999-01-01</param>
                 <param name="max">2010-01-01</param>
                <message>birthday:1999-2010</message>
            </field-validator>
    </field>
    email
    给定的String值是否是一个电子邮件地址<field name="email">
        <field-validator type="email">
            <message>Invalid email</message>
        </field-validator>
    </field>
    url
    给定的String值是否是一个合法的URL(要有前缀)<field name="url">
        <field-validator type="url">
            <message>Invalid URL</message>
        </field-validator>
    </field>
    expression,fieldexpression
    验证给定字段是否满足一个OGNL表达式.
    区别:expression 不是一个字段验证程序,失败时将生成一个动作错误.(JSP中调用<actionerror>
    </actionerror>
    才显示出错信息)
    fieldexpression 是一个字段验证程序,失败时将抛出一个字段错误.(对字段验证)
    param:expression(String)OGNL表达式
    expression:public class ExpressionTestAction {
            //属性生成get,set
        private int min;
        private int max;
    }
    <validator type="expression">
        <param name="expression">
            max > min
        </param>
        <message>
            Maximum temperature must be greater than Minimum temperature
        </message>
    </validator><!-- jsp -->
    <s:actionerror/>
    fieldexpression:public class FieldExpressionTestAction {
            //属性生成get,set
        private int min;
        private int max;
    }
    <!-- 对字段验证 -->
    <field name="max">
        <field-validator type="fieldexpression">
            <param name="expression">
                max > min
            </param>
            <message>
                Maximum temperature must be greater than Minimum temperature
            </message>
        </field-validator>
    </field>
    visitor
    把同一个验证程序配置文件用于多个动作(对一个Bean写验证文件,每个使用的Action只要引用)//UserBean
    public class UserBean {
            //属性get,set
            private String name;
            private int age;
    }//UserBean-validation.xml(和UserBean放在同一个包中)
    <field name="name">
        <field-validator type="requiredstring">
            <message>用户名必须</message>
        </field-validator>
    </field>
    <field name="age">
        <field-validator type="int">
            <param name="min">18</param>
            <param name="max">99</param>
            <message>Age must be between 18 and 99</message>
        </field-validator>
    </field>//Action的validation.xml
    <!-- userBean变量名 -->
    <field name="userBean">
        <field-validator type="visitor">
            <!-- message会和UserBean验证中的message一起显示 -->
            <message>用户: </message>
        </field-validator>
    </field>
    如果另一个Action对UserBean使用另一个标准的验证,可以创建新的验证文件//UserBean-specific-validation.xml
    <!-- 和之前的验证不同 -->
    <field name="age">
        <field-validator type="int">
            <param name="min">30</param>
            <param name="max">50</param>
            <message>Age must be between 30 and 50</message>
        </field-validator>
    </field>
    //另一个Action的validation.xml
    <field name="userBean">
        <field-validator type="visitor">
            <!-- xml中扩展的名字,执行UserBean-specific-validation.xml的验证 -->
            <param name="context">specific</param>
            <message>用户1: </message>
        </field-validator>
    </field>
    conversion
    检查对某个属性进行类型转换是否会导致一个转换错误<field name="age">
        <field-validator type="conversion">
            <message>
                An age must be an integer.
            </message>
        </field-validator>
    </field>
    stringlength
    验证一个非空的字段值是不是足够的长度
    param:minLength(int);maxLength(int);trim(boolean) <field name="password">
            <field-validator type="requiredstring">
                <param name="minLength">6</param>
                 <param name="maxLength">14</param>
                <message>length:6-14</message>
            </field-validator>
    </field>
    regex
    给定的值是否与一个给定的正则表达式匹配
    param:expression(String)正则表达式;caseSensitive(boolean)是否区别大小写,默认为true;trim(boolean)是否去除前后空格<field name="phone">
        <field-validator type="regex">
            <param name="expression">
                <![CDATA[\d\d\d\-\d\d\d\-\d\d\d\d]]>
            </param>
            <message>
                Invalid phone number or invalid format
            </message>
        </field-validator>
    </field>
      

  4.   

    3.在action中验证
    利用Validateable接口实现验证,实现void validate()方法.
    ActionSupport类已经实现了这个接口//继承ActionSupport
    public class User extends ActionSupport {
        //属性get,set
        private String userName;
        private String password;
        private static List<String> userNames = new ArrayList<String>();
        static {
            userNames.add("harry");
            userNames.add("sally");
        }
        //验证方法
        public void validate() {
            if (userNames.contains(userName)) {
                            //添加出错信息
                addFieldError("userName",  "'" + userName + "' has been taken.");
            }
        }
    }
    4.自定义验证类
    要创建一个普通的验证程序(非字段验证程序),扩展ValidatorSupport类.验证失败要从validate方法调用addActionError方法.
    要创建一个字段验证程序,扩展FieldValidatorSupport类.验证失败要从validate方法调用addFieldError方法.
    如果要能接受参数,要在类中定义一个相应的属性,并生成get,set.
    编写类
    public class StrongPasswordValidator extends FieldValidatorSupport {
            //属性
        private int minLength = -1;
        public void setMinLength(int minLength) {
            this.minLength = minLength;
        }
        public int getMinLength() {
            return minLength;
        }
            //验证方法
        public void validate(Object object) throws ValidationException {
            String fieldName = getFieldName();
            String value = (String) getFieldValue(fieldName, object);
            if (value == null || value.length() <= 0) {
                // use a required validator for these
                return;
            }
            if ((minLength > -1) && (value.length() < minLength)) {
                addFieldError(fieldName, object);
            } else if (!isPasswordStrong(value)) {
                addFieldError(fieldName, object);
            }
        }
        
        private static final String GROUP_1 = "abcdefghijklmnopqrstuvwxyz";
        private static final String GROUP_2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private static final String GROUP_3 = "0123456789";
        protected boolean isPasswordStrong(String password) {
            boolean ok1 = false;
            boolean ok2 = false;
            boolean ok3 = false;
            int length = password.length();
            for (int i = 0; i < length; i++) {
                if (ok1 && ok2 && ok3) {
                    break;
                }
                String character = password.substring(i, i + 1);
                System.out.println("character:" + character);
                if (GROUP_1.contains(character)) {
                    ok1 = true;
                    continue;
                }
                if (GROUP_2.contains(character)) {
                    ok2 = true;
                    continue;
                }
                if (GROUP_3.contains(character)) {
                    ok3 = true;
                }
            }
            return (ok1 && ok2 && ok3);
        }    
    }
    注册xml
    在src下创建validators.xml<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC  "-//OpenSymphony Group//XWork Validator Config 1.0//EN"  "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd"><validators>
            <!-- 名称(type对应值),类路径 -->
        <validator name="strongpassword"  class="com.validator.StrongPasswordValidator"/>
    </validators>
    使用验证
    <field name="password">
        <field-validator type="strongpassword">
            <param name="minLength">8</param>
            <message>
                Password must be at least 8 characters long
                and contains at least one lower case character,
                one upper case character, and a digit.
            </message>
        </field-validator>
    </field>