Struts2的%,#,$的区别,UI标签及其表单radio,checkbox,select回显数据(七)中

简介: Struts2的%,#,$的区别,UI标签及其表单radio,checkbox,select回显数据(七)

三. <s:radio> 单选框的设置与回显


三.一 前端设置


三.一.一 Map 形式前端设置


三.一.一.一 设置展示


<s:radio list="#{'1':'男','0':'女'}" name="sex" />


显示的样式便为:


20200609113606283.png


三.一.一.一 设置默认选中


如果想设置选中的话, 用value值来确定。


<s:radio list="#{'1':'男','0':'女'}" name="sex" value="0"/>


上面是Map形式,也可以用list的形式


三.一.二 List 形式前端 设置


三.一.二.一 设置显示


<s:radio name="sex" list="{'男','女'}"/>


20200609113625569.png


翻译成html为:


20200609113638840.png


其中value与显示的label值是一样的。


三.一.二.二 设置默认选中


默认选择一个性别的话:


<s:radio name="sex" list="{'男','女'}" value="'女'"/>


其中注意,字符串用’'进行括起来。


一般来说,性别sex这个数据是由后端来设置和显示的,sex这个字段会被放在一个常量的实体中,这个常量实体一般为:


三.二 后端设置


三.二.一 定义常量 pojo


常量表实体: SystemConn


package com.yjl.pojo;
/**
* @author 两个蝴蝶飞
* @version 创建时间:Aug 24, 2018 10:56:42 PM
* 类说明  常量表实体
*/
public class SystemConn {
  /**
   * @param id 编号主键
   * @param key key值
   * @param value 具体的值
   * @param description 相关的描述
   */
  private Integer id;
  private String key;
  private String value;
  private String description;
  public Integer getId() {
    return id;
  }
  public void setId(Integer id) {
    this.id = id;
  }
  public String getKey() {
    return key;
  }
  public void setKey(String key) {
    this.key = key;
  }
  public String getValue() {
    return value;
  }
  public void setValue(String value) {
    this.value = value;
  }
  public String getDescription() {
    return description;
  }
  public void setDescription(String description) {
    this.description = description;
  }
  public SystemConn() {
    super();
  }
  public SystemConn(Integer id, String key, String value, String description) {
    super();
    this.id = id;
    this.key = key;
    this.value = value;
    this.description = description;
  }
  @Override
  public String toString() {
    return "SystemConn [id=" + id + ", key=" + key + ", value=" + value + ", description=" + description + "]";
  }
}


三.二.二 创建Action 获取数据 RadioAction


public class RadioAction extends ActionSupport{
  private static final long serialVersionUID = 1L;
  public String showData(){
    List<SystemConn> sexList=new ArrayList<SystemConn>();
    //模拟数据
    SystemConn s1=new SystemConn(1,"sex","男","男性");
    SystemConn s2=new SystemConn(2,"sex","女","女性");
    SystemConn s3=new SystemConn(3,"sex","保密","保密");
    //将数据添加到集合中
    sexList.add(s1);
    sexList.add(s2);
    sexList.add(s3);
    //将性别的集合放置到Request域中
    ActionContext.getContext().put("sexList",sexList);
    return "radio";
  }
}


三.二.三 struts.xml 文件 配置


<!-- 配置radio 单选按钮显示 -->
<action name="Radio_*" class="com.yjl.web.action.RadioAction" method="{1}">
  <result name="radio">/WEB-INF/content/radio.jsp</result>
</action>


三.二.四 前端展示 /content/radio.jsp


<s:radio list="#request.sexList" listKey="id" listValue="value" 
    name="sex" />


输入网址: http://localhost:8080/Struts_Data/Radio_showData, 进行相应的展示数据


20200609113659274.png


用list,listKey,listValue来进行相应的显示,翻译后的html为:


20200609113711669.png


其中可以发现,listKey代表的是实际的值,listValue为页面显示的值,list自然为要显示的后端数据。


三.二.四 前端显示设置默认选中


其中如果设置默认选中的话,如默认选中第二个女: 只需要添加一个value集合即可。


<s:radio list="#request.sexList" listKey="id" listValue="value" 
    name="sex" value="#request.sexList[1].id"/>


这样就默认选中第二个了.


也可以使其选中男性,直接用准确的值表示,如:


<s:radio list="#request.sexList" listKey="id" listValue="value" 
    name="sex" value="2"/>


现在只是在页面上全部显示出来能够选择的属性


三.三 对象配置展示


实际开发中是将User中的sex显示出来,然后选中相应的radio。


需要将User与SystemConn进行相应的关联。(User类中已经存在一个sex普通值了,暂时多添加一个gender来表示.sex仍然不去掉).


三.三.一 User.java 添加对象属性


在User.java中


/**
 * @param gender 要演示的性别
 */
private SystemConn gender;


实现它的setter和getter方法。


三.三.二 后端设置


在后端程序中:


public String showData2(){
   //存储常量性别的集合
  List<SystemConn> sexList=new ArrayList<SystemConn>();
  //模拟数据
  SystemConn s1=new SystemConn(1,"sex","男","男性");
  SystemConn s2=new SystemConn(2,"sex","女","女性");
  SystemConn s3=new SystemConn(3,"sex","保密","保密");
  //将数据添加到集合中
  sexList.add(s1);
  sexList.add(s2);
  sexList.add(s3);
  //将性别的集合放置到Request域中
  ActionContext.getContext().put("sexList",sexList);
  //设置用户
  User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下");
  //设置性别之间的关联gender
  user7.setGender(s1);
  //将user7用户放置到ValueStack的栈顶
  ActionContext.getContext().getValueStack().push(user7);
  return "radio";
}


三.三.三 配置struts.xml 文件


不需要改变,不动。


三.三.四 /content/radio 页面编写


在前端jsp页面中:


  ${name}的性别是:
    <s:radio list="#request.sexList" listKey="id" listValue="value" 
    name="gender" value="%{gender.id}"/>


输入网址: http://localhost:8080/Struts_Data/Radio_showData2, 进行相应的展示数据


20200609113733440.png


有的时候,为了简单开发,会将性别这个字段设置成普通的字符串String sex,而不是SystemConn gender,


也就是并不让User表与SystemConn表外键关联性别。


这个时候,前端的编写成 为:


${name}的性别是:
<s:radio list="#request.sexList" listKey="value" listValue="value" 
name="sex" value="%{sex}"/>


四. <s:checkboxlist>复选框的设计与回显


用的是s:checkboxlist, 而不是 s:checkbox


与<s:radio /> 基本相同,这里就简化书写了


四.一 前端形式表达


四.一.一 前端 Map 形式表达


map形式表达:


<s:checkboxlist name="hobbys" list="#{'1':'读书','2':'写小说','3':'编程'}" value="{'2','3'}"></s:checkboxlist>


四.一.二 前端 List 形式表达


list形式表达:


<s:checkboxlist name="hobbys" list="{'读书','写小说','编程'}" value="{'写小说','编程'}"></s:checkboxlist>


20200609113752617.png


其中 value表示选中哪一个。 用value="{}" 集合形式进行表示。


四.二 对象配置展示


从后端向前端传递数据,然后显示在前端。 将上面的SystemConn gender,改改, 只是radio是一个对象,checkboxlist成为一个集合了。(常用于权限的选择和修改)


四.二.一 User.java 类


在User.java中


/**
 * @param hobbys 要演示的爱好
 */
private List<SystemConn> hobbys=new ArrayList<SystemConn>();


实现setter和getter方法


四.二.二 CheckBoxListAction


在CheckBoxListAction中


public class CheckBoxListAction extends ActionSupport{
  private static final long serialVersionUID = 1L;
  public String getData(){
    //存储常量爱好的集合
    List<SystemConn> hobbysList=new ArrayList<SystemConn>();
    //模拟数据
    SystemConn s1=new SystemConn(1,"hobbys","读书","读书");
    SystemConn s2=new SystemConn(2,"hobbys","写小说","写小说");
    SystemConn s3=new SystemConn(3,"hobbys","编程","编程");
    SystemConn s4=new SystemConn(4,"hobbys","唱歌","唱歌");
    //将数据添加到集合中
    hobbysList.add(s1);
    hobbysList.add(s2);
    hobbysList.add(s3);
    hobbysList.add(s4);
    //将爱好的集合放置到Request域中
    ActionContext.getContext().put("hobbysList",hobbysList);
    //设置用户
    User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下");
    //设置爱好之间的关联hobbys
    user7.getHobbys().add(s2);
    user7.getHobbys().add(s3);
    //将user7用户放置到ValueStack的栈顶
    ActionContext.getContext().getValueStack().push(user7);
    return "checkbox";
  }
}


四.二.三 配置struts.xml 文件


<!-- 配置checkboxList 多选框显示 -->
<action name="CheckBoxList_*" class="com.yjl.web.action.CheckBoxListAction" method="{1}">
  <result name="checkbox">/WEB-INF/content/checkbox.jsp</result>
</action>


四.二.四 编写 /content/checkbox.jsp 页面


在前端界面上显示:


${name}的爱好是:
    <s:checkboxlist name="hobbys" list="#request.hobbysList"
    listKey="id" listValue="value" value="hobbys.{id}"></s:checkboxlist>


注意此时value的写法: value=“hobbys.{id}” 即可。


输入网址: http://localhost:8080/Struts_Data/CheckBoxList_getData


展示数据为:


20200412200554110.png


html解析如下所示。


20200609113818515.png


四.三 设置成字符串集合


有的时候,爱好并不会做成对象关联,很可能只是一个普通的字符串,而且这个字符串是用户自己定义的,这个时候爱好只是一个普通的字符串。


四.三.一 User.java 中扩展


User.java中


    /**
   * @param loves 要演示的字符串爱好
   */
  private List<String> loves=new ArrayList<String>();


四.三.二 CheckBoxListAction 添加方法


Action中


public String getData2(){
  ///存储常量爱好的集合
  List<String> lovesList=new ArrayList<String>();
  lovesList.add("读书");
  lovesList.add("写小说");
  lovesList.add("编程");
  lovesList.add("唱歌");
  //将爱好的集合放置到Request域中
  ActionContext.getContext().put("lovesList",lovesList);
  //设置用户
  User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下");
  //设置爱好之间的关联hobbys
  user7.getLoves().add("写小说");
  user7.getLoves().add("编程");
  //将user7用户放置到ValueStack的栈顶
  ActionContext.getContext().getValueStack().push(user7);
  return "checkbox";
}


四.三.三 配置struts.xml 文件


不需要改变


四.三.四 编写 /content/checkbox.jsp 页面


前端界面


<s:checkboxlist name="loves" list="#request.lovesList"></s:checkboxlist>


value不需要写,struts2给封装好了,不写value时,只要保证name=“loves” 与User.java中Loves属性名一致,就可以正常相应的回显。


输入网址: http://localhost:8080/Struts_Data/CheckBoxList_getData2 ,


就可以显示:


20200609113834956.png


相关文章
|
3月前
|
前端开发 JavaScript UED
element-ui 表格数据究竟隐藏着怎样的神秘样式与格式化技巧?快来揭开谜底!
【8月更文挑战第22天】《element-ui 表格数据样式及格式化案例》展示了如何利用 element-ui 的表格组件实现美观且易读的数据展示。通过简单配置,可以自定义表格样式,如边框、背景色等,并通过 formatter 实现数据格式化,例如将成绩保留一位小数。此外,还能依据条件设置行样式,如成绩达优则高亮显示,从而增强用户体验和数据可读性。
65 1
|
3月前
|
计算机视觉
ElementUI——vue2+element-ui 2.x的动态表格和表单
ElementUI——vue2+element-ui 2.x的动态表格和表单
135 1
|
4月前
element UI 组件封装--搜索表单(含插槽和内嵌组件)
element UI 组件封装--搜索表单(含插槽和内嵌组件)
137 5
|
4月前
|
JavaScript
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
vue + element UI 表单中内嵌自定义组件的表单校验触发方案
161 5
|
4月前
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
Element UI【级联选择器】el-cascader 获取选中内容的 label 数据,鼠标悬浮显示超长内容
666 3
|
4月前
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
113 0
Element UI 多选表格【翻页多选】简易版(不支持翻页多选数据反显)
|
4月前
软件研发核心问题之在需求拆解过程中,“数据与UI如何关联”的问题如何解决
软件研发核心问题之在需求拆解过程中,“数据与UI如何关联”的问题如何解决
|
4月前
|
UED
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
Element UI 一键校验多表单(v-for循环表单,异步校验规则,v-for 中的 ref 属性,避坑 forEach 不支持异步 await )
54 0
|
8天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
1月前
|
开发框架 JavaScript 前端开发
鸿蒙NEXT开发声明式UI是咋回事?
【10月更文挑战第15天】鸿蒙NEXT的声明式UI基于ArkTS,提供高效简洁的开发体验。ArkTS扩展了TypeScript,支持声明式UI描述、自定义组件及状态管理。ArkUI框架则提供了丰富的组件、布局计算和动画能力。开发者仅需关注数据变化,UI将自动更新,简化了开发流程。此外,其前后端分层设计与编译时优化确保了高性能运行,利于生态发展。通过组件创建、状态管理和渲染控制等方式,开发者能快速构建高质量的鸿蒙应用。
114 3
下一篇
无影云桌面