将String转换为java bean类型

时间:2015-03-22 09:15:30

标签: java spring

我有一个看起来像这样的字符串,它代表一个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转换为此模型对象?

3 个答案:

答案 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>