java - 将值从 MenuItemTag 传递到 .jsp

标签 java html jsp struts

情况:

我有一个带有菜单和菜单项的 .jsp,它显示在应用程序中的所有其他 .jsp 上。 此时,其中三个 MenuItem 将用户重定向到不同的 .jsp 页面。但这很愚蠢,因为那些 .jsp 和 Action 类几乎是相同的。所以我想做的是:

  • 使这 3 个不同的菜单项/链接重定向到同一页面
  • 点击链接/菜单项时发送参数
  • 取决于“mode”的值:
    • 更改 .jsp 的布局
    • 更改 Action 类中 onPostPrintx-actions 中的变量值

代码:

JSP 页面,其代码为 Menu Widget :

...
<ui:submenu name="Chapter A">
    <ui:menuitem link="/ThisPage.do">Printoption A</ui:menuitem>
    <ui:menuitem link="/ThisPage.do">Printoption B</ui:menuitem>
    <ui:menuitem link="/ThisPage.do">Printoption C</ui:menuitem>
    ...
</ui:submenu> 
<ui:submenu name="Chapter B">
    ...
</ui:submenu>
...

带有打印按钮的 JSP 页面('ThisPage'):

<html>
<div>
...
<c:set var="mode" value="${PageData.fields.mode}" />
<c:set var="title" value="${val:iif(mode=='1','Option1',val:iif(mode=='2','Option2','Option3'))}" />
...
<body>
    <html-el:form action="/Print" method="post" >
    <h1>Print ${title}</h1>
    <html-el:hidden property="field(mode)"/>
...
(assorted fields to filter output data)
...
        <html-el:submit property="event(printPdf)" styleClass="button" style="width=125">Print to .PDF</html-el:submit>
    <c:if test="${(mode=='3')}">
        <html-el:submit property="event(printWord)" styleClass="button" style="width=125">Print to .DOC</html-el:submit>
    </c:if>
...
</div>
</body>
</html>

操作类('打印'):

...
public ActionForward onPostPrintPdf(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, HttpServletResponse response) 
            throws Exception 
{
    ...
    request.setCharacterEncoding("UTF-8");
    Connection connection = null;
    PageData inForm = ActionUtils.getInputForm(mapping, request, form);
    String mode = (String)inForm.getField("mode");
    ...
    (assorted variables, field/variable validation, export to Jasper Report, etc.)
    ...
    return ActionUtils.getInputRedirect(mapping, request, inForm);
}
...
(more actions for more printing options)
...

我正在努力解决的问题:

我对 Struts(和 java)还很陌生,我已经设置了一切(在我的知识范围内)来“接收”参数值并将其放入“mode”变量中。 但我正在努力“发送”该值,因为我无法在菜单项中使用“onclick”之类的东西。

此时我真的不知道如何在单击其中一个菜单项时将值传递给“mode”。

最佳答案

感谢Jimmy引导我走向正确的方向! 这是适用于我的代码的解决方案:

...
<ui:submenu name="Chapter A">
    <ui:menuitem link="/ThisPage.do?field(mode)=optionA">Printoption A</ui:menuitem>
    <ui:menuitem link="/ThisPage.do?field(mode)=optionB">Printoption B</ui:menuitem>
    <ui:menuitem link="/ThisPage.do?field(mode)=optionC">Printoption C</ui:menuitem>
    ...
</ui:submenu> 
<ui:submenu name="Chapter B">
    ...
</ui:submenu>
...

关于java - 将值从 MenuItemTag 传递到 .jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34069520/

相关文章:

java - JAX-RS( Jersey )和 Jackson 未正确序列化 LocalDate

javascript - 如何像加载网页一样发推特

c# - 使用 C# TcpChannel 服务器的 Java RMI 客户端

java - 用单个文件编写的应用程序会引发 NullPointerException

javascript - 选择特定链接后如何在同一位置显示五个视频之一?

javascript - 如何使用 wkhtmltopdf 获取由 html 生成的 pdf 中的页码

java - 如何在另一个 servlet 中传递值?

javascript - 在 jsp 页面中的下拉列表和日期选择器上应用必需的字段验证

javascript - 使用Jquery/AJAX在JSP页面中通过linux绝对路径显示文本文件内容

java - 我不太清楚如何让这些公共(public)整数发挥作用