Не удается найти способ отправки атрибута со страницы jsp в действие Struts2

В моем JSP я использую строку

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

которые показывают на веб-странице "albumid 2", где 2 - идентификатор текущего альбома

но когда я пытаюсь отправить 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" %>

2 ответа

Решение
<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}" />
Другие вопросы по тегам