Hungkin’s Blog

Tìm hiểu về Struts 2 (P.5)

Posted by hungkin™ on 23/05/2009

Các loại Result

Chain Result

-Sử dụng
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ố
actionName (mặc định) – là tên của action sẽ được chuyển đến
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.
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().
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">
    <!-- Chain creatAccount to login, using the default parameter -->
    <action name="createAccount" class="...">
        <result type="chain">login</result>
    </action>

    <action name="login" class="...">
        <!-- Chain to another namespace -->
        <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" class="...">
        <result>dashboard.jsp</result>
    </action>
</package>

Dispatcher Result


-Sử dụng

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ố

location (mặc định) – nơi đến sau khi thực thi (ví dụ một trang JSP).

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>


FreeMarker Result

-Sử dụng

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

-Tham số

location (mặc định) – vị trí của mẫu để xử lý.

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.

contentType – mặc định là “text/html”.

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>

HttpHeader Result

-Sử dụng

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ố

status – http servlet trả về mã trạng thái mà sẽ được thiết lập trên một response.

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.

headers – giá trị header.

error – http servlet trả về mã lỗi mà sẽ được thiết lập trên một response.

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>

Redirect Result

-Sử dụng

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ố

location (mặc định) – nơi sẽ đến sau khi thực thi.

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

Đâ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ố

actionName (mặc định) – tên của Action sẽ chuyển hướng đến

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” class=”…”>
<!– Redirect to another namespace –>
<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” class=”…”>
<result>dashboard.jsp</result>
<result name=”error” type=”redirect-action”>error</result>
</action>
<action name=”error” class=”…”>
<result>error.jsp</result>
</action>
</package>
<package name=”passingRequestParameters” extends=”struts-default” namespace=”/passingRequestParameters”>
<– Pass parameters (reportType, width and height) –>
<!–
The redirect-action url generated will be :
/genReport/generateReport.action?reportType=pie&width=100&height=100
–>
<action name=”gatherReportInfo” class=”…”>
<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>

Stream Result

-Sử dụng

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ố

contentType – mặc định là text/plain.

contentLength – độ dài bytes.

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”).

inputName – tên của thuộc tính InputStream từ action chuyển đến (mặc định = inputStream).

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>

Velocity Result

-Sử dụng

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ố

location (default) – vị trí của mẫu để xử lý.

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>

XSL Result

-Sử dụng

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ố

location (default) – nơi đến sau khi thực thi.

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.

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ứ.

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:

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>

PlainText Result

-Sử dung

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ố

location (mặc định) – vị trí của file (jsp/html) cần hiển thị dạng plain text.

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>

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

 
%d bloggers like this: