Struts2 List无法解析为视图

时间:2017-09-20 22:40:50

标签: java jsp struts2

我正在使用struts 2,我已经设置了这样的代码:

动作类:

public class OrderDetailAction extends BaseActionSupport {

    private Collection<ShippingAddress> shippingAddressList;

    <the getters and setters here>

    private Collection<ShippingAddress> billingAddressList;

    <the getters and setters here>


    public String displayCreate() {
        LOGGER.info("DISPLAY CREATE CALLED");
        populateForiegnFields();
        LOGGER.info("populate foreign fields done calling");
        return SUCCESS;
    }


    private void populateForiegnFields(){

        LOGGER.info("ENTERED POPULATE FOREIGN FIELDS");

        ShippingAddressService shippingAddressService = ServiceFactory.getInstance().getShippingAddressService();
        shippingAddressList = shippingAddressService.getShippingAddresss();
        if(shippingAddressList == null) {
            LOGGER.info("shipping address list IS NULL");
        } else {
            LOGGER.info("shipping address list IS NOT NULL. CONTENTS:");

        }
        getSession().put("shippingAddressList", shippingAddressList);

        billingAddressList = shippingAddressService.getShippingAddresss();

        if(billingAddressList == null) {
            LOGGER.info("billingAddressList IS NULL");
        } else {
            LOGGER.info("billingAddressList IS NOT NULL. CONTENTS:");

        }
        getSession().put("billingAddressList", billingAddressList);

    }

我的创建订单明细JSP的片段是:

    <s:form>
                <div class="form-group">some other fields</div>

                <div class="form-group">
                    <s:select label="SHIPPINGADDRESSID" list="shippingAddressList" listKey="ID" listValue="ID" name="shippingAddress" ></s:select>
                </div>

                <div class="form-group">
                    <s:select label="BILLINGADDRESSID" list="billingAddressList" listKey="ID" listValue="ID" name="billingAddress" ></s:select>
                </div>
                <input class="btn btn-success" type="submit" name="action:createOrderDetail" value="submit" id="displayCreateOrderDetail_createOrderDetail"/>
            <input class="btn btn-default" type="submit" name="action:getOrderDetails" value="cancel" id="displayOrderDetail_getOrderDetails" />
    </s:form>

我得到的错误是:

  

标记'select',字段'list',名称'shippingAddress':请求的列表   密钥'shippingAddressList'无法解析为   collection / array / map / enumeration / iterator type

但令我困惑的是,特别是在我在其他帖子上查找此错误之后  人们建议可以永远不会实例化shippingAddressList,但是当我检查上面写的日志文件时,它不是null,并且在某一时刻,我还记录了来自shippingAddressList的值。

还有其他原因我可能会收到此错误吗?

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

首先删除集合,改为使用List。

    private List<ShippingAddress> shippingAddressList;
    <the getters and setters here>
    private List<ShippingAddress> billingAddressList;
    <the getters and setters here>

我不确定你为什么把这两个列表放在会话上。他们已经处于价值叠加状态。

我相信您的ShippingAddress班级有ID属性。

答案 1 :(得分:0)

哦,小男孩,所以这里是我犯的错误。为了确保人们不会遇到这种麻烦:

我的shippingAddressList和我的billingAddressList的getter和setter如下:

get**s**hippingAddressList(); set**s**hippingAddressList()

get**b**illingAddressList(); set**b**illingAddressList()

这里的问题是外壳不合适。因为它不是合适的骆驼案例,所以struts永远无法调用getter和setter。