在行动中定义的打印变量

时间:2012-09-17 12:18:17

标签: java jsp struts

我可以以某种方式打印作为参数传递给jsp的字符串吗? 我们假设我有行动: package com.test;

 public class TestAction extends Action {

     String foo="bar";
   @Override
   public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     //request.setParameter("foo", doo); // this does not work, I would like to achieve it. 
     return mapping.findForward("sql");
   }

 }

和jsp文件:

 <!DOCTYPE html>
 <%@page contentType="text/html"%>
 <%@page pageEncoding="UTF-8" %>
 <%@page import="com.test.TestAction" %>
 <%= request.getParameter("foo") %>

我在struts-config.xml中定义了:

 <action     
      name="loginForm"
      path="/login"
      scope="request"
      type="com.test.com.test.TestAction"
      validate="false">
          <forward name="sql" path="/index.jsp" />
 </action>

我可以这样做吗?

2 个答案:

答案 0 :(得分:4)

你需要改变两件事:

  request.setParameter("foo", doo);

应该是

  request.setAttribute("foo", doo);

<%= request.getParameter("foo") %>

应该是

<c:out value="${request.foo}"/>

部分用于可维护性,部分用于防止注入攻击...除非您实际上期望doo包含有效(且安全)的HTML标记。 (使用<c:out>假设您有

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

在JSP的开头)。

答案 1 :(得分:1)

您是否尝试过使用set/getAttribute代替set/getParameter