Các loại Result trong Struts 2

3.1.1.Chain Result

-Sử dụng
wine Result này triệu gọi toàn bộ một action khác với toàn bộ stack bộ chặn và result của nó

-Tham số
wine actionName (mặc định) – là tên của action sẽ được chuyển đến
wine namespace – dùng để xác định không gian tên của action đang được chuyển đến, nếu namespace là null thì mặc định là lấy không gian tên hiện tại.
wine method – dùng để chỉ ra phương thức ở action đích được triệu gọi. Nếu null thì mặc định là phương thức execute().
wine skipActions – (tùy chọn) danh sách các tên action phân cách nhau bởi dấu phẩy, đây là danh sách các action có thể được chuyển đến.

-Ví dụ

<package name="public" extends="struts-default">

    <action name="createAccount">
        <result type="chain">login</result>
    </action>

    <action name="login">

        <result type="chain">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>
    </action>
</package>

<package name="secure" extends="struts-default" namespace="/secure">
    <action name="dashboard">
        <result>dashboard.jsp</result>
    </action>
</package>

3.1.2.Dispatcher Result

-Sử dụng
wine Includes hoặc forwards đến một view (thường là một trang JSP). Đằng sau những luồng sự kiện, Struts sẽ sử dụng RequestDispatcher, nơi mà servlet/JSP đích nhận cùng các đối tượng request/response như ở servlet/JSP gốc. Vì vậy, bạn có thể đưa dữ liệu vào giữa chúng sử dụng request.setAttribute()

-Tham số
wine location (mặc định) – nơi đến sau khi thực thi (ví dụ một trang JSP).
wine parse – (mặc định là true). Nếu thiết lập là false, thì tham số location sẽ không được phân tích cho biểu thức Ognl.

-Ví dụ

<result name="success" type="dispatcher">
  <param name="location">foo.jsp</param>
</result>

3.1.3.FreeMarker Result

-Sử dụng
wine Sinh ra một view sử dụng bộ mẫu Freemarker

-Tham số
wine location (mặc định) – vị trí của mẫu để xử lý.
wine parse – (mặc định là true). Nếu thiết lập là false, thì tham số location sẽ không được phân tích cho biểu thức Ognl.
wine contentType – mặc định là “text/html”.
wine writeIfCompleted – (mặc định là false), write vào stream khi và chỉ khi không có lỗi nào trong quá trình xử lý mẫu. Cài đặt template_exception_handler=rethrow trong freemarker.properties sẽ có hiệu quả tương tự.

-Ví dụ

<result name="success" type="freemarker">foo.ftl</result>

3.1.4.HttpHeader Result

-Sử dụng
wine Một tùy chọn loại Result cho cài đặt các header và trạng thái của HTTP bằng cách tùy chọn các giá trị của ValueStack. Kết quả này cũng có thể được dùng để gửi hoặc báo lỗi cho trình khách.

-Tham số
wine status – http servlet trả về mã trạng thái mà sẽ được thiết lập trên một response.
wine parse – (mặc định là true). Nếu thiết lập false thì tham số header sẽ không được phân tích trong biểu thức Ognl.
wine headers – giá trị header.
wine error – http servlet trả về mã lỗi mà sẽ được thiết lập trên một response.
wine errorMessage – thông điệp lỗi để thiết lập trên response nếu tham số ‘error’ được thiết lập.

-Ví dụ

<result name="success" type="httpheader">
  <param name="status">204</param>
  <param name="headers.a">a custom header value</param>
  <param name="headers.b">another custom header value</param>
</result>

<result name="proxyRequired" type="httpheader">
  <param name="error">305</param>
  <param name="errorMessage">this action must be accessed through a prozy</param>
</result>

3.1.5.Redirect Result

-Sử dụng
wine Gọi phương thức {HttpServletResponse#sendRedirect(String)} để đến nơi được chỉ ra. Response được ra lệnh chuyển hướng trình duyệt đến nơi được chỉ ra (một yêu cầu mới của trình khách). Hậu quả của việc thực hiện ý định này là action (một action xác định, lỗi action, lỗi trường,…) mà sẽ được thực thi bị mất đi hoặc thời gian thực thi không dài. Điều này là bởi action được xây dựng theo mô hình đơn nhiệm. Chỉ có một các đưa dữ liệu là thông qua session hoặc là các tham số web(url?name=value).

-Tham số
wine location (mặc định) – nơi sẽ đến sau khi thực thi.
wine parse – (mặc định là true). Nếu thiết lập là false, thì tham số location sẽ không được phân tích cho biểu thức Ognl.

-Ví dụ

<result name="success" type="redirect">
  <param name="location">foo.jsp</param>
  <param name="parse">false</param>
</result>

3.1.6.Redirect Action Result

-Sử dụng
wine Đây là result dùng ActionMapper được cung cấp bởi ActionFactory để chuyển hướng trình duyệt đến một URL mà triệu gọi action và namespace được chỉ ra. Điều này tốt hơn ServletRedirectResult bởi vì nó không yêu cầu bạn mã hóa các mẫu URL xử lý bởi ActionMapper trong file cấu hình struts.xml. Điều này có nghĩa là ứng dụng của bạn sẽ vẫn làm việc, một lời khuyên là nếu bạn chuyển hướng đến một action nữa bạn nên sử dụng result này hơn là redirect result chuẩn.

-Tham số
wine actionName (mặc định) – tên của Action sẽ chuyển hướng đến
wine namespace – không gian tên của Action. Nếu null thì mặc định là không gian tên hiện tại

-Ví dụ

<package name="public" extends="struts-default">
    <action name="login">

        <result type="redirect-action">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>
    </action>
</package>

<package name="secure" extends="struts-default" namespace="/secure">
    <-- Redirect to an action in the same namespace -->
    <action name="dashboard">
        <result>dashboard.jsp</result>
        <result name="error" type="redirect-action">error</result>
    </action>

    <action name="error">
        <result>error.jsp</result>
    </action>
</package>

<package name="passingRequestParameters" extends="struts-default" namespace="/passingRequestParameters">
   <-- Pass parameters (reportType, width and height) -->

   <action name="gatherReportInfo">
      <result name="showReportResult" type="redirect-action">
         <param name="actionName">generateReport</param>
         <param name="namespace">/genReport</param>
         <param name="reportType">pie</param>
         <param name="width">100</param>
         <param name="height">100</param>
      </result>
   </action>
</package>

3.1.7.Stream Result

-Sử dụng
wine Một loại Result tùy chọn để gửi dữ liệu thô (thông qua InputStream) trực tiếp đến HttpResponse. Rất hữu ích cho phép người sử dụng tải nội dung.

-Tham số
wine contentType – mặc định là text/plain.
wine contentLength – độ dài bytes.
wine contentDispostion – giá trị các bố trí nội dung header để chỉ ra tên file (mặc định = inline, các giá trị đặc trưng filename=”document.pdf”).
wine inputName – tên của thuộc tính InputStream từ action chuyển đến (mặc định = inputStream).
wine bufferSize – kích thước của bộ đệm để copy từ input vào output (mặc định = 1024).

-Ví dụ

<result name="success" type="stream">
  <param name="contentType">image/jpeg</param>
  <param name="inputName">imageStream</param>
  <param name="contentDisposition">filename="document.pdf"</param>
  <param name="bufferSize">1024</param>
</result>

3.1.8.Velocity Result

-Sử dụng
wine Sử dụng trình chứa Servlet của JspFactory, result này giả lập một môi trường thực thi JSP và sau đó hiêne thị mãu Velocity mà sẽ được đưa trực tiếp đến servlet output.

-Tham số
wine location (default) – vị trí của mẫu để xử lý.
wine parse – (mặc định là true). Nếu thiết lập là false, thì tham số location sẽ không được phân tích cho biểu thức Ognl.

-Ví dụ

<result name="success" type="velocity">
  <param name="location">foo.vm</param>
</result>

3.1.9.XSL Result

-Sử dụng
wine XSLTResult sử dụng XSLT để chuyển một đối tượng action sang XML. Những phiên bản mới đây đã được thay đổi đặc tả để thỏa mãn với các luật Xalan.

-Tham số
wine location (default) – nơi đến sau khi thực thi.
wine parse – (mặc định là true). Nếu thiết lập là false, thì tham số location sẽ không được phân tích cho biểu thức Ognl.
wine matchingPattern – mẫu chỉ kết hợp với các phần tử mong muốn, mặc định nó kết hợp với mọi thứ.
wine excludingPattern – mẫu loại bỏ các phần tử không mong muốn, mặc định không có gì.

Cấu hình struts.properties liên quan: 
wine struts.xslt.nocache – mặc định là false, nếu thiết lập là trua thì disables stylesheet caching Defaults to false. If set to true, disables stylesheet caching. Điều này lợi cho việc phát triển nhưng không có lợi có sản xuất.

-Ví dụ

<result name="success" type="xslt">
  <param name="location">foo.xslt</param>
  <param name="matchingPattern">^/result/[^/*]$</param>
  <param name="excludingPattern">.*(hugeCollection).*</param>
</result>

3.1.10.PlainText Result

-Sử dung
wine Result mà gửi nội dung ra dạng plain text. A result that send the content out as plain text. Dùng đặc trưng khi cần hiển thị nội dung thô của một file JSP hoặc HTML.

-Tham số
wine location (mặc định) – vị trí của file (jsp/html) cần hiển thị dạng plain text.
wine charSet (tùy chọn) – tập kí tự được sử dụng, tập kí tự này sẽ được dùng để thiết lập loại response (ví dụ Content-Type=text/plain; charset=UTF-8)

-Ví dụ

<action name="displayJspRawContent" >
  <result type="plaintext">/myJspFile.jsp</result>
</action>

<action name="displayJspRawContent" >
  <result type="plaintext">
     <param name="location">/myJspFile.jsp</param>
     <param name="charSet">UTF-8</param>
  </result>
</action>