我正在尝试使用struts lib获取.jsp中url的参数,并使用该参数为jsp页面内的表单的action属性创建自定义url。
填充参数的JavaScript:
function openNewWindow(qtype) {
var x = screen.width / 3;
var y = screen.height / 3;
window.open('FileUpload.jsp?q=' + qtype, 'UploadExelSheet',
'height=250,width=400');
}
从javascript重定向到FileUpload.jsp后, jsp页面的示例网址: http://localhost:8080/QuizApp/FileUpload.jsp?q=1
以下是我尝试在FileUpload.jsp中获取'q'值并为操作表单创建自定义URL:
<html>
<head>
<title>File Uploading Form</title>
<meta http-equiv="refresh"
content="${pageContext.session.maxInactiveInterval}; url=Timedout.jsp?type=timeout; charset=ISO-8859-1">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<script src="js/myscript.js" type="text/javascript"></script>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload:
<br />
<c:set var="qtype" value="uploadq?q=${q}" />
<s:url action="%{qtype}" var="myUrl"/>
<s:form action="%{#myUrl}" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="uploadfile" size="50" />
<input type="submit" id="submit" />
</s:form>
</body>
</html>
但它似乎不起作用。
答案 0 :(得分:0)
你可以在jsp中得到你的q参数:
${param.q}
因此,在FileUpload.jsp中,您可以使用Struts2标记设置值(s:set insteaof c:set)以下代码:
<s:set var="qtype" value="uploadq?q=${param.q}" />
或者您可以使用以下代码构建URL:
<s:url id="myUrl" action="uploadq" var="myUrl">
<s:param name="q">${param.q}</s:param>
</s:url>
对于您的表单,您可以使用qtype或myUrlvar作为操作属性,使用OGNL,如下所示:
<s:form action="%{#qtype}" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="uploadfile" size="50" />
<input type="submit" id="submit" />
</s:form>
或者
<s:form action="%{#myUrl}" method="post" enctype="multipart/form-data">
<input type="file" name="upload" id="uploadfile" size="50" />
<input type="submit" id="submit" />
</s:form>
希望它有所帮助。