我想从 JSP 中删除 scriplet。 在我的 JSP 中,我有一个 scriplet 为
<%response.setContentType("text/xml");%>
我创建了一个 View bean并创建了一个属性作为HttpServletResponse响应
并为此属性添加了 getter/setter。
当我尝试在 ViewBean
中获取响应时,它为 null
。
有什么建议可以避免此 NullPointerException
吗?
我的 JSP 代码是:
<jsp:useBean id="test" class="someBean" />
<jsp:setProperty name="test" property="*" />
<jsp:getProperty name="test" property="response" />
ViewBean代码是:
package test.here;
import java.sql.*;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.commerce.server.WcsApp;
import com.ibm.commerce.server.JSPHelper;
public class SomeBean {
String punchOutRes = null;
HttpServletResponse response;
HttpServletRequest request;
String test="Hello";
public HttpServletResponse getResponse() {
return response;
}
public void setResponse(HttpServletResponse response) {
this.response = response;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public String getPunchOutRes() {
response.setContentType("text/xml");
return "testing";
}
public String getTest(){
}
}
最佳答案
您可以使用 page 指令来删除上面的 scriptlet:
<%@ page contentType="text/xml;charset=ISO-8859-1" %>
通常,您的 bean 代码不应包含任何 servlet 特定信息。
在 servlet 中使用:
request.setAttribute("test", myBean);
request.getRequestDispatcher("page.jsp").forward(request, response);
在JSP中使用:
${test.foo}
其中 foo 显示为
public String getFoo() {
return foo;
}
在 Bean 类中。
关于java - 如何在 View Bean中获取JSP请求和响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983398/