通过struts2 <s:url> </s:url>传递参数的问题

时间:2012-12-17 21:55:45

标签: struts2 dynamic-image-generation

我通过从动态图片网址传递参数来调用struts2动作

<img src="<s:url action='ImageAction?imageId=logo.jpg' />"/>

使用此操作我的操作正确调用,但参数imageId=logo.jpg未传递给我的操作类。

但是如果我从浏览器url手动传递参数,那么参数正确地显示在我的java页面中,例如。 http://localhost:8080/mypoject/jspHomepage/bookstransaction/secure/ImageAction?imageId=logo.jpg

这可能是什么原因? 请帮帮我。

struts.xml中

          `
    `<package name="Image"   extends="struts-default,json-default"> 
            <result-types>
        <result-type name="imageResult"
            class="v.esoft.actions.changetheme.CustomImageBytesResult" />
        </result-types>
          <action name="updatethemeimageform"  class="v.esoft.actions.changetheme.ThemedetailsEditAction" method="updateThemesImage">  
            <result name="success" type="json"/>
            <result name="input" type="json"/>     
        </action>  
       <action name="Display" class="v.esoft.actions.changetheme.DisplayAction">
            <result name="success" type="json"/>
      </action> 
      <action name="ImageAction" class="v.esoft.actions.changetheme.ImageAction">
        <result name="success" type="imageResult">
        </result>
     </action> 
         </package>`

ImageAction.java

public class ImageAction extends ActionSupport implements ServletRequestAware {

byte[] imageInByte = null;
String imageId;

private HttpServletRequest servletRequest;

public String getImageId() {
    return imageId;
}

public void setImageId(String imageId) {
    this.imageId = imageId;
}

public ImageAction() {
    System.out.println("ImageAction");
}

public String execute() {
    return SUCCESS;
}

public byte[] getCustomImageInBytes() {
        System.out.println("imageId" + imageId);
    }
}

1 个答案:

答案 0 :(得分:1)

以下是未经测试的。

使用param标签添加参数。

<s:url package="Image" action="ImageAction" var="myUrl">
   <s:parm name="imageId" value="'logo.jpg'"/>
</s:url>

<img src="<s:property value="#myUrl"/>"/>

注意:我怀疑在最后一行myUrl应该足够(没有#)但是现在不记得了。