Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:jsf:migration [2008/04/25 14:10] bananastudy:jsf:migration [2008/04/26 12:50] (現在) banana
行 62: 行 62:
   </controller>   </controller>
 </code> </code>
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
  
行 68: 行 80:
  
 ===== Example of Struts-JSF Integration ===== ===== Example of Struts-JSF Integration =====
-Struts application을 JSF로 이관하는 과정을 이해하기 간단한 logon화면을 보여주는 jsp를 살펴보자.\\ 현재의 struts버전은 대략 다음과 같은 모습이다.+Struts application을 JSF로 이관하는 과정을 이해하기 위해 간단한 logon화면을 보여주는 jsp를 살펴보자. 
 +현재의 struts버전은 대략 다음과 같은 모습이다. 
 + 
 +**Listing 1: A simple Struts-based logon JSP**
  
-Listing 1: A simple Struts-based logon JSP 
 <code html> <code html>
 <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-bean" prefix="bean" %>
 <%@ taglib uri="/tags/struts-html" prefix="html" %> <%@ taglib uri="/tags/struts-html" prefix="html" %>
 +
 <html:html> <html:html>
 <head> <head>
行 110: 行 125:
 </body> </body>
 </html:html> </html:html>
 +
 </code> </code>
  
-**Step 1: Change the tag library declarations** 제일 처음에 해야 할 작업은 tag library 선언부를 Struts-JSF tag library로 바꾸는 것이다. 그리고 모든 컴포넌트 태그를 <f:view> 태그로 둘러싼다. +**Step 1: Change the tag library declarations** 제일 처음에 해야 할 작업은 tag library 선언부를 Struts-JSF tag library로 바꾸는 것이다.\\ 
 + 그리고 모든 컴포넌트 태그를 <f:view> 태그로 둘러싼다. 
  
 <code html> <code html>
行 118: 行 135:
 <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 <%@ taglib uri="http://struts.apache.org/tags-faces" prefix="s" %> <%@ taglib uri="http://struts.apache.org/tags-faces" prefix="s" %>
 +
 <f:view> <f:view>
 <s:html locale="true"> <s:html locale="true">
 </code> </code>
  
-**Step 2: Modify declarations for localized messages** 두번째 단계는 <s:loadMessage> 태그를 사용하여 basename으로 지정되어 있는 ResourceBundle을 로드하는 것이다. basename을 지정하지 않으면 기본으로 저장되어있는 application의 기본 MessageResources 번들이 로드되며, 일단 로드되면 모든 컴포넌트로부터 messages를 키로 JSF Expression language형식으로 접근할 수 있다.+**Step 2: Modify declarations for localized messages** 두번째 단계는 <s:loadMessage> 태그를 사용하여 basename으로 지정되어 있는 %%ResourceBundle%%을 로드하는 것이다.\\  
 +basename을 지정하지 않으면 기본으로 저장되어있는 application의 기본 %%MessageResources%% 번들이 로드다. 
  
 <code html> <code html>
 <f:loadBundle var="messages" basename="com.mycompany.myapp.ApplicationResources"/> <f:loadBundle var="messages" basename="com.mycompany.myapp.ApplicationResources"/>
 </code> </code>
 +
 +일단 로드되면 모든 컴포넌트로부터 messages를 키로 JSF Expression language형식으로 접근할 수 있다.\\
 +다음은 title을 %%ResourceBundle%%을 이용하여 지역화한 예이다.
 +
 +<code html>
 +<title>
 +  <h:outputText value="#{messages['logon.title']"/>
 +</title>
 +</code>
 +
 +**Step 3: Change tags for error and form components** 세번째는 validation error를 보여주는 <s:errors> 태그와 <html:form> 태그를 <s:form> 태그로 교체하는 것이다.
 +
 +<code html>
 +<s:errors/>
 +<s:form action="/logon">
 +</code>
 +
 +**Step 4: Using JSF EL for input fields** 네번째 단계는 Struts form tag를 해당 JSF form tag로 교체하는 작업이다.
 +logonForm이라는 이름으로 %%ActionForm%%이 struts-config.xml에 저장돼있다고 가정한다.
 +
 +<code html>
 +<h:inputText id="username" value="#{logonForm.username}"/>
 +...
 +<h:inputSecret id="password" value="#{logonForm.password}"/>
 +</code>
 +
 +**Step 5: Change tags for submit and reset buttons** 마지막으로 button 의 label을 지역화한다. 이때 %%HtmlCommandButton%% 컴포넌트에 action속성이 지정되있지 않는 것에 눈여겨 보기 바란다. 이는 버튼이 클릭되면 <s:form> 요소와 연결돼있는 struts Action이 실행되기 때문이다.
 +
 +지금까지의 교체작업으로 바뀐 완성된 JSP는 다음과 같다.\\
 +
 +**Listing 2: Example logon JSP after migration using the Struts-Faces Integration Library**
 +
 +<code html>
 +<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 +<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
 +<%@ taglib uri="http://struts.apache.org/tags-faces" prefix="s" %>
 +<f:view>
 +<f:loadBundle var="messages" basename="com.mycompany.myapp.ApplicationResources"/>
 +<s:html locale="true">
 +<head>
 +<title><h:outputText value="#{messages['logon.title']"/></title>
 +</head>
 +<body>
 +<s:errors/>
 +<s:form action="/logon"/>
 +<table border="0">
 +  <tr>
 +    <td align="right">
 +      <h:outputText value="{messages['prompt.username']"/>
 +    </td>
 +    <td align="left">
 +      <h:inputText id="username" value="#{logonForm.username}"/>
 +    </td>
 +  </tr>
 +  <tr>
 +    <td align="right">
 +      <h:outputText value="#{messages['prompt.password']"/>
 +    </td>
 +    <td align="left">
 +      <h:inputSecret id="password" value="#{logonForm.password}"/>
 +    </td>
 +  </tr>
 +  <tr>
 +    <td align="right">
 +        <h:commandButton id="submit" type="SUBMIT" value="#{messages['button.logon']"/>
 +    </td>
 +    <td align="left">
 +      <h:commandButton id="reset" type="RESET" value="#{messages['button.reset']"/>
 +    </td>
 +  </tr>
 +</table>
 +</s:form>
 +</body>
 +</s:html>
 +</f:view>
 +</code>
 +
 +===== Reference =====
 +  - JSF In Action, Kito D. Mann
 +  - [[http://www.oracle.com/technology/pub/articles/masterj2ee/j2ee_wk8.html]] : The Best of Both Worlds: Integrating JSF with Struts in Your J2EE Applications
 +
  
  

QR Code
QR Code study:jsf:migration (generated for current page)