我有一个看起来像这样的字符串,它代表一个pojo。
Model [Name=Mobie , location= US, actualTransferDate=null, scanserialCode=234335,1237787, modelNum=MIC 898989 ]
我想让读者对上面的字符串更清楚一点。我想在jsp页面表中将用户选中的复选框值(表示整个行与下面pojo中的fileds)读到另一个jsp页面。因此,在控制器中,我将这些选中的复选框行读作如下所示。
String[] checkeditems = request.getParameterValues("case");//case represents the entire row
for (String string : checkeditems) {
log.info("row1"+string);// String pasted above in the message
}
从上面它返回一个字符串数组,我想转换为一个列表对象,这样我就可以轻松地将这个列表发送到下一个jsp的视图。我觉得我正走向错误的方向并做一些无关的事情。
我有一个pojo为
public class Model{
private String Name;
private String location;
private String actualTransferDate;
private String scanserialCode;
private String modelNum;
====Getters/Setter======
我如何将此String转换为此模型对象?
答案 0 :(得分:0)
如果你想让它完全动态,你可以使用Reflection。
例如,使用正则表达式(Pattern / Matcher)查找[...]部分,在此之前使用String作为类名(假设您知道包名称),然后执行一个简单的逗号/等号-sign在[...]部分分开并通过反射填充字段......没那么难。
答案 1 :(得分:0)
您可以在Model类中定义一个构造函数,该构造函数接受完整的字符串作为输入。使用带有分隔符的StringTokenizer作为','将字符串转换为标记列表。然后使用'='作为分隔符将每个标记标记为tokenizer。这样,您将拥有Model类标记的所有成员,这些成员可用于初始化成员变量的值。
答案 2 :(得分:0)
您可以将字符串拆分为“,”并迭代结果数组。使用来自apache的BeanUtils,您可以填充新的pojo实例。
示例:强>
public class Model {
private String Name;
private String location;
private String actualTransferDate;
private String scanserialCode;
private String modelNum;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getActualTransferDate() {
return actualTransferDate;
}
public void setActualTransferDate(String actualTransferDate) {
this.actualTransferDate = actualTransferDate;
}
public String getScanserialCode() {
return scanserialCode;
}
public void setScanserialCode(String scanserialCode) {
this.scanserialCode = scanserialCode;
}
public String getModelNum() {
return modelNum;
}
public void setModelNum(String modelNum) {
this.modelNum = modelNum;
}
@Override
public String toString() {
return "[Name = " + getName() + "location = " +getLocation() + ", actualTransferDate = " + getActualTransferDate() + ", scanserialCode = " + getScanserialCode() + ", modelNum = " + getModelNum() + "]";
}
}
import org.apache.commons.beanutils.BeanUtils;
public class Main {
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException {
String model = new String("Name=Mobie , location= US, actualTransferDate=null, scanserialCode=234335,1237787, modelNum=MIC 898989");
String[] modelValues = model.split(", ");
Model m = new Model();
for (String value : modelValues) {
String[] s = value.split("=");
String fieldName = s[0];
String fieldValue = s[1];
BeanUtils.setProperty(m, fieldName, fieldValue);
}
System.out.println(m.toString());
}
}
Maven依赖:
<dependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
</dependencies>