0

We are using Struts2 in our Java webapplication. There is a Member table(columns name, phoneno.etc.,) which is mapped to Address table(columns street, city, zipcode, country) using a mapped table MemberAddress(old code, no chance of changing the member table to add columns of address in it and remove Address table).

When a user want to edit the member profile, he clicks on settings, which directs him to the execute() method of action class. There am getting the address object with the logged in member id. something like the below code.

protected String execute() throws Exception {

    Member loginMember = memberDAO.getLoggedInMember();
    memberId = loginMember.getId();
    if (StringUtils.isNotBlank(memberId)) {
        loginMember = memberDAO.getById(memberId);
        Memberaddress memberAddress =   
                      memberAddressDAO.getByMemberId(loginMember.getId());
        Address newAddress = null;
        if (memberAddress != null && memberAddress.getId() != null) {
            newAddress = addressDAO.getById(memberAddress.getId().getAddressid());
        } else {
            newAddress = new Address();
        }
    }
    return SUCCESS;
}

if the result is Success, it directs to its results page, memberprofile.jsp, which contains input form fields. Here i want to display the existing profile details, including Address object instance variable i.e, street, city, zipcode. How should i get the Member object & Address object in the jsp page. I am trying

<s:set var="address" value="newaddress"/>

and enter its data in the jsp's input name fields like this.

<input id="addressStreet" type="text"    
 value="<s:property value="#address.addressstreet" escape="false"/>"/>

but I am getting value="" in firebug. I thing am doing something wrong while retrieving the output.

4

2 に答える 2

1

Struts2はあなたの生活を楽にし、オブジェクトをアクションからValuStackに転送OGNLし、Value-stackから値を取得するために必要なすべてを処理します。

オブジェクトにデータを配置newAddressし、尊重されたでその値を取得したいと思いますJSP。アクションクラスでゲッターとセッターを使用してプロパティを定義し、S2にオブジェクトを埋めさせて、それを値スタックに転送するために必要なのはすべてです。

newAddress次のようなOGNLを使用してValueStackのオブジェクトのプロパティにアクセスするために必要なすべて

<s:property name="addressStreet"/>

成功の結果がアクションから返送されると、クラスS2がnewAddressバリュースタックの一番上に配置され、OGNLがそれらにアクセスできるようになります。

于 2012-04-30T09:50:51.040 に答える
1

以下のコードを使用してください

<s:property value="#request.address.addressstreet"/>
于 2012-04-30T08:00:56.380 に答える