Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在struts中发布和获取jsp中的url参数_Jsp_Struts - Fatal编程技术网

在struts中发布和获取jsp中的url参数

在struts中发布和获取jsp中的url参数,jsp,struts,Jsp,Struts,我试图使用struts库获取.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', 'he

我试图使用struts库获取.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页面的示例url:

以下是我试图获取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>

文件上载表格
文件上载:
选择要上载的文件:


但它似乎不起作用。

您可以在jsp中获得q参数,如下所示:

${param.q}
因此,在FileUpload.jsp中,您可以使用Struts2标记设置值(s:set而不是c:set),代码如下:

<s:set var="qtype" value="uploadq?q=${param.q}" />
<s:url id="myUrl" action="uploadq" var="myUrl">
    <s:param name="q">${param.q}</s:param>
</s:url> 

或者,您可以使用以下代码构造URL:

<s:set var="qtype" value="uploadq?q=${param.q}" />
<s:url id="myUrl" action="uploadq" var="myUrl">
    <s:param name="q">${param.q}</s:param>
</s:url> 

${param.q}
对于表单,您可以使用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>



希望有帮助。

该值已在页面中获取,但实际运行时,动态url显示为空白,而使用时,您的值为#,请将其删除。已尝试删除#,但仍不起作用:(能否尝试操作=“%{#myUrl}”,修改答案上的s:url标记。或者您可以使用struts标记s:set而不是c:set,然后使用OGNL放置操作属性action=“%{qtype}”