【问题标题】:Pass value from JSP to Action Class in Struts将值从 JSP 传递到 Struts 中的动作类
【发布时间】:2013-01-08 15:22:28
【问题描述】:

在下面的代码示例中,我试图将 param1 值从我的 jsp 传递到 myaction 类。当用户单击文件号时,我试图传递文件号以及 param1 值。

<display:table   name="sessionScope.List" requestURI="${urlRepDetails}" pagesize='<%= pagesize %>' sort="list" class="displaytag" defaultsort="3" defaultorder="ascending"  >
<display:column href="/myaction.do?param1=xyz"paramId="fileNumber" paramProperty="fileNumber" property="fileNumber" title= 'fileNumber" %>' sortable="true" headerClass="sortable" class="tabel-border"/>
</display:table>

在我的行动课上,我正在做的是:

if(request.getParameter("param1")=="xyz"){
String REQUEST_NO = request.getParameter("fileNumber");
nextView=callMethod(mapping, form, request, response, REQUEST_NO);
}

但是值 param1 没有被传递,并且在点击超链接时控件甚至没有转到动作类。 我的应用程序是在 liferay 中设计的。通常我将动作类称为

<display:table   name="sessionScope.List" requestURI="${urlDetail}" pagesize='<%= pagesize %>' sort="list" class="displaytag" defaultsort="3" defaultorder="ascending"  >
    <display:column href="${urlDetails}"paramId="fileNumber" paramProperty="fileNumber" property="fileNumber" title= 'fileNumber" %>' sortable="true" headerClass="sortable" class="tabel-border"/>
    </display:table>

在我的jsp中我也有:

<liferay-portlet:renderURL var="urlDetails">
  <liferay-portlet:param name="_xyz" value="/myaction.do" />
  <liferay-portlet:param name="table_select" value="abcd" />
</liferay-portlet:renderURL>

在动作类中:

if(request.getParameter("table_select")!=null && request.getParameter("table_select").equals("abcd")){
                        String REQUEST_NO = request.getParameter("fileNumber");
                        nextView = callMethod(mapping, form, request, response, REQUEST_NO);    

我需要知道如何将值直接从 href 传递给我的操作类?

【问题讨论】:

  • 您需要了解您的 JSP 不是“调用”任何操作。 JSP 呈现 HTML,然后显示在浏览器中。单击链接或提交表单时,浏览器中的操作会将 HTTP 请求提交回您的服务器。因此,您需要分析这些 HTTP 请求并找出您的应用程序没有收到它们的原因
  • 请努力把 Struts-1 抛在后面。它今天没有任何价值。现代 JSP 胜过 Struts 1 提供的大部分功能,而其余部分则略高于原始 servlet,因此不值得努力。至少升级到 Struts-2。 Java Web 编程在过去 14 年中发生了很大变化。
  • 您确定您调用的是正确的操作链接吗?您应该检查 struts 配置文件,并且如果您在某些域下运行 Web 应用程序,您应该将上下文路径包含到调用的超链接
  • 在门户世界中(假设您使用的是基于 struts 的 portlet)您不能请求纯自制操作 URL(例如以 *.do 结尾),但您必须依赖在 上提供 URL。您在这里给出的上下文太少,无法判断您实际在做什么。
  • Liferay 版本是什么?那么我想如果你想在liferay中使用struts,struts_action不应该是renderURL中的参数,就像&lt;liferay-portlet:renderURL var="urlDetails"&gt; &lt;liferay-portlet:param name="struts_action" value="/myaction.do" /&gt; &lt;liferay-portlet:param name="table_select" value="abcd" /&gt; &lt;/liferay-portlet:renderURL&gt;一样,我也希望struts-config.xml是正确的。

标签: java struts liferay struts-config


【解决方案1】:

您提供的 ActionClass 路径似乎有问题

/myaction.do

确保您在 href 中提供的路径相对于 struts-config 文件是正确的。

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 2013-12-07
    • 2014-12-14
    • 2012-06-04
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    相关资源
    最近更新 更多