找不到从jsp页面向Struts2动作发送属性的方法

时间:2015-11-26 22:38:30

标签: java jsp struts2 scriplets

在我的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" %>

2 个答案:

答案 0 :(得分:0)

\enquote{...}

答案 1 :(得分:0)

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

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

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