1. 下拉框实例类

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils; public class CodeNameItem { /**
* Build a CodeNameItem instance from an object with given mapping properties.
*
* @param obj
* @param idProps
* @param codeProps
* @param nameProps
* @param descProps
* @return
*/
public static CodeNameItem fromObject(Object obj, String idProps, String codeProps, String nameProps,
String descProps) {
Long id;
try {
id = (Long) PropertyUtils.getProperty(obj, idProps);
String code = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, codeProps));
String name = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, nameProps));
String description = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, descProps));
return new CodeNameItem(id, null, code, name, description, description);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* Build a CodeNameItem instance from an object with given mapping properties.
*
* @param obj
* @param idProps
* @param codeProps
* @param nameProps
* @param descProps
* @param markStatus 启用
* @return
*/
public static CodeNameItem fromObject(Object obj, String idProps, String codeProps, String nameProps,
String descProps,String markStatus) {
Long id;
try {
id = (Long) PropertyUtils.getProperty(obj, idProps);
String code = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, codeProps));
String name = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, nameProps));
String description = StringUtils.defaultString((String) PropertyUtils.getProperty(obj, descProps));
Object property=null;
try {
property=PropertyUtils.getProperty(obj, markStatus);
}catch(Exception e) {
property=true;
}
//判断人员markStatus字段类型
Boolean status=null;
if(property instanceof Boolean) {
status=(Boolean)PropertyUtils.getProperty(obj, markStatus);
}else if(property instanceof Integer) {
Integer num=(Integer)property;
status=num==1?true:false;
}else if(property instanceof Long) {
Integer num=1;
status=property.equals(num.longValue())?true:false;
}else if(property instanceof String) {
status = BooleanUtils.toBoolean((String)property);
}else {
//其他类型默认都是启用的
status=true;
}
return new CodeNameItem(id, null, code, name, description, description,status);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private Long id = null; private String type; private String code; private String name;
private String description; /**
* @Fields descriptionEn : CodeList中的英文描述,2013-01-23,yangzhi
*/
private String descriptionEn;
private String funcCn;// BIZCodeList功能中文描述 private String funcEn; // BIZCodeList 功能英文描述 public CodeNameItem() {
} public CodeNameItem(Long id, String type, String code, String name, String description) {
super();
this.id = id;
this.type = type;
this.code = code;
this.name = (name == null || "".equals(name)) ? "" : name;
this.description = (description == null || "".equals(description)) ? "" : description;
} /**
* 创建一个新的实例 CodeNameItem,此构造方法能创建CodeList中有英文描述
*
* @param id
* @param type
* @param code
* @param name
* @param description
* @param descriptionEn
*/
public CodeNameItem(Long id, String type, String code, String name, String description, String descriptionEn) {
super();
this.id = id;
this.type = type;
this.code = code;
this.name = (name == null || "".equals(name)) ? "" : name;
this.description = (description == null || "".equals(description)) ? "" : description;
this.descriptionEn = (descriptionEn == null || "".equals(descriptionEn)) ? "" : descriptionEn;
} /**
* 创建一个新的实例 CodeNameItem,此构造方法能创建codelist启用不启用
*
* @param id
* @param type
* @param code
* @param name
* @param description
* @param descriptionEn
*/
public CodeNameItem(Long id, String type, String code, String name, String description, String descriptionEn,Boolean markStatus) {
super();
this.id = id;
this.type = type;
this.code = code;
this.name = (name == null || "".equals(name)) ? "" : name;
this.description = (description == null || "".equals(description)) ? "" : description;
this.descriptionEn = (descriptionEn == null || "".equals(descriptionEn)) ? "" : descriptionEn;
} /**
* 创建一个新的实例 CodeNameItem,此构造方法能创建CodeList中有英文描述
*
* @param id
* @param type
* @param code
* @param name
* @param description
* @param descriptionEn
* @param funcCn
* @param funcEn
*/
public CodeNameItem(Long id, String type, String code, String name, String description, String descriptionEn,
String funcCn, String funcEn) {
super();
this.id = id;
this.type = type;
this.code = code;
this.name = (name == null || "".equals(name)) ? "" : name;
this.description = (description == null || "".equals(description)) ? "" : description;
this.descriptionEn = (descriptionEn == null || "".equals(descriptionEn)) ? "" : descriptionEn;
this.funcCn = (funcCn == null || "".equals(funcCn)) ? "" : funcCn;
this.funcEn = (funcEn == null || "".equals(funcEn)) ? "" : funcEn;
} public int compare(CodeNameItem item) {
return (this.getCode() + this.getName()).compareToIgnoreCase(item.getCode() + item.getName());
} @Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (getClass() != obj.getClass())
return false;
final CodeNameItem other = (CodeNameItem) obj;
if (code == null) {
if (other.code != null)
return false;
} else if (!code.equals(other.code))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
} public String getCode() {
return code;
} public String getDescription() {
return description;
} public String getDescriptionEn() {
return descriptionEn;
} public String getFuncCn() {
return funcCn;
} public String getFuncEn() {
return funcEn;
} public Long getId() {
return id;
} public String getLabel() {
return this.name;
} public String getName() {
return name;
} public String getType() {
return type;
} public String getValue() {
return this.code;
} @Override
public int hashCode() {
final int PRIME = 31;
int result = 1;
result = PRIME * result + ((code == null) ? 0 : code.hashCode());
result = PRIME * result + ((name == null) ? 0 : name.hashCode());
return result;
} public void setCode(String code) {
this.code = code;
} public void setDescription(String description) {
this.description = description;
} public void setDescriptionEn(String descriptionEn) {
this.descriptionEn = descriptionEn;
} public void setFuncCn(String funcCn) {
this.funcCn = funcCn;
} public void setFuncEn(String funcEn) {
this.funcEn = funcEn;
} public void setId(Long id) {
this.id = id;
} public void setName(String name) {
this.name = name;
} public void setType(String type) {
this.type = type;
} public String toString() {
return "id:" + id + "\ttype:" + type + "\tcode:" + code + "\tname:" + name + "\tdescription:" + description;
}
}

2.结果实例转换类

package org.testzl.zlqtms.controller.datasource;

import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors; public class CodeNameItemConvertor<T> {
private List<T> list; public CodeNameItemConvertor(List<T> list) {
this.list = list;
} public <U> List<U> map(Function<? super T, ? extends U> converter) {
if (list == null)
return null;
return list.stream().map(converter::apply).collect(Collectors.toList());
} }

3.使用案例

    @GetMapping("xxxxx")
public List<CodeNameItem> tbClaimTypes(@RequestParam(required=false) String q) {
BaseSearchViewModel baseSearchViewModel = new BaseSearchViewModel();
baseSearchViewModel.setLimit(200);
TbClaimType tbTrouble = new TbClaimType();
tbTrouble.setTypeCode(q);
tbTrouble.setCompany(userCompanyUtil.getUserCompany());
GridResult<TbClaimType> pageListByCode = tbClaimTypeService.query(baseSearchViewModel, tbTrouble);
return new CodeNameItemConvertor<TbClaimType>((List<TbClaimType>)pageListByCode.getBody())
.map(p -> CodeNameItem.fromObject(p, "id", "typeCode", "descZh", "descEn"));
}

java下拉框转换公共方法的更多相关文章

  1. jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等

    简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...

  2. Selenium+java - 下拉框处理

    常见下拉框也分两种:一种是标准控件和非标准控件(一般为前端开发人员自己封装的下拉框),本篇文章中将重点讲解标准下拉框操作. 1.Select提供了三种选择某一项的方法 select.selectByI ...

  3. java下拉框,滚动条

    package com.soft.test; /** * 下拉列表.下拉框.滚动条的使用 */ import javax.swing.*; import java.awt.*; public clas ...

  4. jquery操作select下拉框的多种方法(选中,取值,赋值等)

    Query获取Select选择的Text和Value: 语法解释: 1. $("#select_id").change(function(){//code...}); //为Sel ...

  5. [selenium]选取下拉框内容的方法

    说明:本文章主要是对select元素操作的讲解,非select元素的下拉框需要另外分析 1.select元素示例: 2.select下拉框选取的3种方法 WebElement selector = d ...

  6. java 下拉框级联及相关(转)

    ActionLintsner都实现此接口,其它监听器可以监听的事件都可以被它捕获 public interface ActionListener extends EventListenerThe li ...

  7. angular 中自己常用的下拉框获取值方法

    方法一 HTML页中 <select name="" id="if02" data-first-option="true" (chan ...

  8. PHP下拉框选择的实现方法

    实现 第一种PHP下拉框实现方法: < ?php //提交下拉框; //直接饱触发onchange事件的结果 $id=$_GET['myselect']; // myselect 为locati ...

  9. easyUI combobox下拉框很长,easyUI combobox下拉框如何显示滚动条的解决方法

    如下图,combobox下拉框里内容很多时,会导致下拉框很长,很不美观. 如何使得combobox下拉框显示滚动条 方法:把属性panelHeight:"auto"注释掉即可. $ ...

随机推荐

  1. Sysenter/Kifastcallentry hook 检测与恢复

    关于Sysenter.Kifastcallentry.中断之类的内核入口hook技术早就烂大街了,可是对hook的检测与恢复代码却是寥寥无几,一切抛开代码将原理的行为都是耍流氓. 下面以Sysente ...

  2. element UI遇到的问题

    1. 在el-dialog中获取el-table的ref为undefined 问题:虽然设置了el-dialog的visible为true,但此时Dom并没有更新,因此在Dom更新前取不到el-tab ...

  3. ACwing02.01背包问题

    有\(N\)件物品和一个容量是\(V\)的背包.每件物品只能使用一次. 第\(i\)件物品的体积是\(v_i\),价值是\(w_i\). 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 ...

  4. Xshell连接Ubuntu服务器连接不上 显示拒绝了密码

    确保下方两个都安装了 sudo apt-get install openssh-server sudo apt-get install ssh 修改 vim /etc/ssh/sshd_config ...

  5. thymeleaf标签在js中调用转义变量与不转义变量写法

    转义写法 [[${content.title}]] 不转义写法 有时候我们可能需要在页面上显示html代码 这样的话 就不能把字符串转义了 这时候可以采用下面这种写法 [(${content.txt} ...

  6. 给初学者的STM32(Cortex-M3)中断原理及编程方法介绍 [原创www.cnblogs.com/helesheng]

    本人编著的<基于STM32的嵌入式系统原理及应用>(ISBN:9787030697974)刚刚在科学出版社出版.这本书花费了半年以上的时间,凝聚了笔者作为高校教师和嵌入式工程师的一些经验, ...

  7. 【LeetCode】201. Bitwise AND of Numbers Range 解题报告(Python)

    [LeetCode]201. Bitwise AND of Numbers Range 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/prob ...

  8. Oracle VirtualBox 配置宿主机与虚拟机互访

    写作原因 之前经常使用 VMware Workstation Pro,由于是非正常付费使用的不打算再用了.替代品就是 Oracle VirtualBox,但是发现了一个问题: "我想用NAT ...

  9. vue create 初步解析以及定制化修改

    版本说明 $ vue --version @vue/cli 4.5.9 $ node --version v14.0.0 $ npm --version 7.6.1 源码位置-mac /usr/loc ...

  10. python学习第二天:命令行模式和python交互模式

    命令行模式 安装完python开发环境和工具之后,在Windows开始菜单选择"命令提示符",就会进入到命令行模式: 或者都可以,然后 点击enter键,弹出下图中的窗口,即命令行 ...