Не удается найти способ отправки атрибута со страницы 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}" />