无法找到将属性从 jsp 页面发送到 Struts2 操作的方法

Can't find the way to send attribute from a jsp page to a Struts2 action

在我的 jsp 中,我使用

<p> albumid ${param.id}</p>

显示在网页上"albumid 2"其中2是当前相册的id

但是当我尝试将 albumid 发送到操作文件上传时

package ca.qc.bdeb.p55.actions;


import ca.qc.bdeb.p55.Dao.PhotoDao;
import ca.qc.bdeb.p55.Model.Photo;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.Results;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;


import java.io.File;
import java.io.IOException;
import java.sql.Timestamp;
import java.util.Map;

@Results({
        @Result(name = "success", location = "photo.jsp"),
        @Result(name = "error", location = "photo.jsp")
})

public class FileUploadAction extends ActionSupport  implements SessionAware {
private File myFile;
private String myFileContentType;
private String myFileFileName;
private String destPath;
private PhotoDao photoDAO;
private int idAlbum;
private  Map<String, Object> session;

/**
 * Execute une instertion de fichier dans un dossier du serveur
 *
 * @return
 */
@Override
@Action(value = "/FileUpload")
public String execute() {


    idAlbum  = Integer.parseInt((String) session.get("idAlbum"));
    destPath = "/data/"+idAlbum+"/";
    try {
        System.out.println("Src File name: " + myFile);
        System.out.println("Dst File name: " + myFileFileName);

        File destFile = new File(destPath, myFileFileName);

        FileUtils.copyFile(myFile, destFile);

        Photo newPhoto = new Photo(idAlbum, destPath + "/" + myFileFileName, new Timestamp(0), "Non-Implanter", myFileFileName);
        photoDAO.ajouterPhotoDansBD(newPhoto);

    } catch (IOException e) {
        e.printStackTrace();
        return ERROR;
    } catch (NullPointerException e) {
        e.printStackTrace();
        return ERROR;
    }
    return SUCCESS;
}

public File getMyFile() {
    return myFile;
}

public void setMyFile(File myFile) {
    this.myFile = myFile;
}

public String getMyFileContentType() {
    return myFileContentType;
}

public void setMyFileContentType(String myFileContentType) {
    this.myFileContentType = myFileContentType;
}

public String getMyFileFileName() {
    return myFileFileName;
}

public void setMyFileFileName(String myFileFileName) {
    this.myFileFileName = myFileFileName;
}

public int getIdAlbum() {
    return idAlbum;
}

public void setIdAlbum(int idAlbum) {
    this.idAlbum = idAlbum;
}

public void setSession(Map<String, Object> map) {
    session = map;
}
}

在 jsp

中加上这一行
<%session.setAttribute("idAlbum", "${param.id}"); %>

该动作字面上接收“${param.id}”而不是“2”

知道如何发送 ${param.id} 的值吗?


2015-11-27更新

这里是完整的jsp

    <%@page import="org.omg.Dynamic.Parameter" %>
<%@page import="sun.misc.Request" %>
<%--
  Created by IntelliJ IDEA.
  User: hugo
  Date: 2015-10-27
  Time: 1:33 PM
  To change this template use File | Settings | File Templates.
--%>

<%@include file="_Header.jsp" %>
<%@page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix='c'%>

<div class="col-sm-3">
    <h2 align="center"> Ajouter des photos</h2>
    <%--<a href="#win2" class="btn btn-default btn-lg btn-block" role="button">Ajouter une photo</a>--%>
    <%--<%session.setAttribute("idAlbum", "${param.id}"); %>--%>

    <p>
        albumid <s:property value="idAlbum" />

    </p>

        <s:form action="FileUpload" method="post" id="form" enctype="multipart/form-data">
            <s:hidden    name="${param.id}" />
            <h1><span style="color: #000000">Upload your file</span></h1>
            <label for="myFile"> </label>
            <input type="file" id=myFile name="myFile"/>
            <a><input type="submit" value="Upload2" onClick="checkFormPhoto()" href="FileUpload.action"></a>

        </s:form>
</div>
<s:form action="pageAlbum" theme="xhtml">
    <%--<p> nom de lalbum</p>--%>
    <%--<s:property value="nomAlbum"/>--%>
    <%--<p> nom de lalbums  <% request.getParameter("id"); %></p>--%>
    <p> id de l'album  ${param.id}</p>
    <s:iterator value="listPhoto">
        <!--<img src="./image/dossier.png" alt="Photo de montagne" title= "mmmm"</a>-->
        <p><s:property value="path"/></p>
        <%--<a href=".image\bam.png"/>--%>
    </s:iterator>
</s:form>
<%@include file="_Footer.jsp" %>
<p> 
    albumid <s:property value="idAlbum" /> 
            <s:hidden    name="idAlbum" /> 
</p>
<p> albumid ${param.id}</p> 

以上代码仅用于显示 para.id 值。它没有将 para.id 作为请求参数附加。
解决方案:您必须使用隐藏的表单字段标记将值传递给操作。

<input type="hidden" name="albumid" value="${param.id}" />