diff --git a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java index 37d8cfc11..42b916be6 100644 --- a/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java +++ b/core/src/main/java/org/apache/struts2/views/xslt/XSLTResult.java @@ -238,6 +238,9 @@ public class XSLTResult implements Result { /** Indicates the ognl expression respresenting the bean which is to be exposed as xml. */ private String exposedValue; + /** Indicates the status to return in the response */ + private int status = 200; + private boolean parse; private AdapterFactory adapterFactory; @@ -307,6 +310,18 @@ public class XSLTResult implements Result { this.excludingPattern = excludingPattern; } + public String getStatus() { + return String.valueOf(status); + } + + public void setStatus(String status) { + try { + this.status = Integer.valueOf(status); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Status value not number " + e.getMessage(), e); + } + } + /** * If true, parse the stylesheet location for OGNL expressions. * @@ -328,7 +343,7 @@ public class XSLTResult implements Result { try { HttpServletResponse response = ServletActionContext.getResponse(); - + response.setStatus(status); PrintWriter writer = response.getWriter(); // Create a transformer for the stylesheet. diff --git a/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java b/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java index 9cb69b41d..c7eda1059 100644 --- a/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java +++ b/core/src/test/java/org/apache/struts2/views/xslt/XSLTResultTest.java @@ -191,7 +191,20 @@ public class XSLTResultTest extends StrutsTestCase { assertEquals("Error transforming result", ex.getMessage()); } } - + + public void testStatusCode() throws Exception { + result.setParse(false); + result.setLocation("XSLTResultTest.xsl"); + result.setStatus("302"); + result.execute(mai); + + String out = response.getContentAsString(); + + assertEquals(302, response.getStatus()); + assertTrue(out.startsWith("")); + assertTrue(out.indexOf(" -1); + } + protected void setUp() throws Exception { super.setUp(); request = new MockHttpServletRequest();