当前位置: 首页 > 知识库问答 >
问题:

liferay portlet:重定向到带有js参数的新jsp

张高澹
2023-03-14

我正在开发一个Liveay portlet。我想做的是打开一个新的jsp,并向它发送一个来自javascript变量的URL参数。我考虑了一下,发现了两个想法:

1) 使用ajax将js变量发送到jsp,然后在jsp中使用从js接收到的参数值创建一个呈现url。但是我如何将js变量发送到jsp,我在互联网上找不到一个好的例子。

2) 使用收到的参数在javascript中构建呈现url,然后使用我找到的呈现url从脚本本身重定向到新的jsp文件。为此,我发布了一个问题Liferay portlet:从javascript重定向到另一个jsp页面,但我还没有找到解决方案。

有人建议我如何使用我的一个想法或可能是另一个想法来实现我想要的吗?

共有1个答案

从烈
2023-03-14

我终于找到了这个问题的解决方案。我在jsp页面中添加了一个隐藏的post表单,该表单只包含一个输入,并向这样的操作方法发布:

<portlet:actionURL var="jsVarActionURL" name="jsVarAction"/>
<form:form name="JsVarModel" method="post" modelAttribute="JsVarModel" action="<%=jsVarActionURL.toString() %>">
    <form:input id="jsVar" type="text" path="receivedMessage" style="display:none;"/>
    <input id="submit" type="submit" value="Add" style="display:none;"></input>
</form:form>

所以我想在javascript中的某些情况下,我必须向新的jsp页面发送一个js变量并打开它。因此,在脚本中,当条件有效时,我将javascript值设置为输入#jsVar,并在submit按钮中创建一个虚拟单击按钮,该按钮具有jquery的触发功能,如下所示:

var jsToJsp="Hello jsp I'm a js variable"

if(/*condition*/)
{
    $("#jsVar").val(jsToJsp);
    $("#submit").trigger("click");
}

在控制器中,动作方法将接收来自表单输入字段的值,然后将其重定向到渲染方法:

@RenderMapping(params={"action=displayPageRender"}) 
public ModelAndView openUserProfilPage(RenderRequest request,RenderResponse response,Model model) 
{
    ModelAndView modelAndView= new ModelAndView("display");
    modelAndView.addObject("jsVar", request.getParameter("jsVar"));
    return modelAndView;

}

@ActionMapping(value = "jsVarAction")
public void sessionKeyActionMethod(@ModelAttribute("JsVarModel")ActionReceiveModel jsVar,ActionRequest actionRequest, ActionResponse actionResponse,Model model)
{
    actionResponse.setRenderParameter("jsVar", jsVar.getMessage());
    actionResponse.setRenderParameter("action", "displayPageRender");
}

然后我可以用${jsVar}display.jsp接收它,一切正常。

 类似资料:
  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很不好,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据并尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:有没有一种方法可以通过PHP传递POST参数,以便重定向也可以通

  • 我试图重定向路由从控制器函数后,在Laravel 5.4表单提交过程中,如下面的链接所说 https://laravel.com/docs/5.4/redirects#redirecting-命名路线 路线; 控制器; 当我试图重定向我得到这个错误。 InvalidArgumentExcema在UrlGenerator.php304行:路由[配置文件]未定义。 关于重定向,我已经搜索了好几次,但都

  • 我正在使用Stripe Connect,并在文档中使用了它们的示例代码。你将一个用户重定向到条带页面,他们注册后会重定向回你的站点。Stripe然后会在URL中发送一个代码,以便您能够访问并向用户帐户收费。 重定向后,这段代码就是他们在示例中的内容: 重定向URL为https://connect.stripe.com/oauth/authorize?response_type=code

  • 问题内容: 我有一个网页。该网页将用户重定向到另一个网页,或多或少通过以下方式: 好吧,您知道,我要做的是将GET参数转换为POST参数。不要告诉我这很糟糕,我知道我自己,这也不是我真正要做的,重要的是我从数组中收集数据,然后尝试通过POST将其提交到另一个页面。但是,如果用户关闭了JavaScript,它将无法正常工作。我需要知道的是:是否可以通过PHP传递POST参数,以便重定向也可以通过PH

  • 在Spring MVC中, 当返回值包含重定向前缀时,viewResolver将其识别为需要重定向的特殊指示。视图名称的其余部分将被视为重定向URL。客户端将向该重定向URL发送一个新请求。 我们可以编写如下处理程序方法来处理重定向: 现在我们可以像这样在中访问这个重定向属性 通常我们可以在方法中访问这个重定向属性,但是当我在返回语句中指定一个URL作为参数化url时,如下所示 我无法访问重定向属

  • 这是一个不同于 如何在IntelliJ IDEA中输入命令行参数? 这个问题的重点是,用redirct符号运行 线程“main”java.lang.IllegalArgumentException中出现异常。 而且我在官方帮助文档中没有找到任何关于使用重定向符号<带参数的说明。