Java 杂谈

Struts2学习笔记 | 表单标签

2019-08-04  本文已影响1人  一颗白菜_

概述


一些简单的标签

例如隐藏域<s:hidden></s:hidden>,输入框<s:textfield ></s:textfield>,密码输入框<s:password ></s:password>,提交<s:submit></s:submit>,表单<s:form> </s:form>等等。

直接看Demo吧
form-tag.jsp:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: 白菜
  Date: 2019/8/4
  Time: 9:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <s:form action="save">
        <s:hidden name="userId"></s:hidden>
        <s:textfield name="userName" label="UserName"></s:textfield>
        <!-- password标签默认不回显 -->
        <s:password name="passWord" label="PassWord" showPassword="true"></s:password>
        <s:textfield name="desc" label="Desc"></s:textfield>
        <s:submit></s:submit>
    </s:form>
</body>
</html>

struts.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <!-- 配置Struts可以受理的请求的扩展名 -->
    <constant name="struts.action.extension" value="action,,do"></constant>
    <package name="default" extends="struts-default" strict-method-invocation="false">
        <action name="save" class="struts.label.UserAction" method="save">
            <result name="input">/8_4/form-tag.jsp</result>
        </action>
    </package>

</struts>

UserAction.java:

package struts.label;

import com.opensymphony.xwork2.ActionContext;

public class UserAction {
    private String userId;
    private String userName;
    private String passWord;
    private String desc;
    private boolean married;

    public boolean isMarried() {
        return married;
    }

    public void setMarried(boolean married) {
        this.married = married;
    }

    public String getUserId() {
        return userId;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }


    public String save(){
        System.out.println(this);

        return "input";
    }

    @Override
    public String toString() {
        return "UserAction{" +
                "userId='" + userId + '\'' +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", desc='" + desc + '\'' +
                ", married=" + married +
                '}';
    }
}


checkbox标签


select标签

名字 数据类型 默认值 说明
headerKey String 选项列表中第一个选项的键
headerValue String 选项列表中第一个选项的值
list String 用来充当选项来源的可遍历对象
listKey String 用来提供选项值的对象属性
listValue String 用来提供选项行标的对象属性

Demo

<!-- 一个下拉框 -->
<s:select list="{11,12,13,14,15,16,17,18,19,20}"
            headerKey=""
            headerValue="请选择"
            name="age"
            label="Age">
</s:select>

optiongroup标签

名字 数据类型 默认值 说明
list String 用来充当选项来源的可遍历对象
listKey String 用来提供选项值的对象属性
listValue String 用来提供选项行标的对象属性

Demo:

<s:select list="{11,12,13,14,15,16,17,18,19,20}"
            headerKey=""
            headerValue="请选择"
            name="age"
            label="Age">
            <!--
                s:optgroup可以用作s:select的子标签,用于显示更多的下拉框
                注意:必须有键值对,而不能使用一个集合,让其既作为键,又作为值
                但是这个不一定是一定要Map,也可以是传入一个包含对象的集合,然后指定键和值就好
            -->
            <s:optgroup label="21-30" list="#{21:21,22:22}"></s:optgroup>
            <s:optgroup label="31-40" list="#{31:31}"></s:optgroup>
 </s:select>

checkboxlist标签

名字 数据类型 默认值 说明
list String 用来充当选项来源的可遍历对象
listKey String 用来提供选项值的对象属性
listValue String 用来提供选项行标的对象属性

Demo
忽略City类的代码

    <%
        List < City > cities = new ArrayList <City>();
        cities.add(new City(1001,"aa"));
        cities.add(new City(1002,"bb"));
        cities.add(new City(1003,"cc"));
        cities.add(new City(1004,"dd"));
        request.setAttribute("cities",cities);
    %>
<s:checkboxlist list="#request.cities"
            listKey="cityId" listValue="cityName"
            label="City" name="city">
</s:checkboxlist>

说明

对于selectcheckboxlist标签,list属性可以自己编写键值对,此时要以#{key1:value1,key2:value2}的格式来写。当然也可以通过编写一个类,然后将要编写的属性写在类的属性中。然后创建一个包含若干个该对象的List集合,并通过checkboxlist的Demo中的方式那样编写。


主题

前面说到在编写<s:form>标签时会自动生成一个table标签,其实这是因为主题

simple:把UI标签翻译成最简单的HTML对应元素,而且会忽视行标属性
xhtml:xhtml是默认的主题,这个主题的模板通过使用一个布局表格提供了一种自动化的排版机制
css_xhtml:这个主题里的模板与xhtml主题里的模板很相似,但他们将使用css来进行布局和排版
ajax:这个主题里的模板以xhtml主题里的模板为基础,但增加了一些Ajax功能。

上一篇下一篇

猜你喜欢

热点阅读