이글루스 | 로그인  



struts2 개발 메모3

requiredstring = $\{getText(fieldName)} is required.
password = Password
username = User Name

 

 

Action Class 에서 Message bundle 파일을 이용하고 싶은 경우

 

Message bundle 파일에 다음과 같이 key, value 정의 되어 있다면

HelloWorld.message = Struts is up and running ...

Missing.message = This feature is under construction.

 

public static final String MESSAGE= “HelloWorld.message”;

 

위의 방식으로 변수를 선언 한뒤 Action Class 에서

setMessage(getText(MESSAGE));

같이 getText 이용하는거 같다.

 

 

 

Jsp 파일에서 message bundle 파일을 이용하는 방법은 세가지가 있는거 같다.

번째

<s:property value="getText('some.key')"/>

번째

<-- Fourth Example -->
<s:text name="some.key"/>
 
<-- Fifth Example -->
<s:text name="some.invalid.key">
   The Default Message That Will Be Displayed
</s:text>

세번째

<s:i18n name="some.package.bundle">
     <s:text name="some.key"/>
</s:i18n>

 

첫번째는 알겠는데두번째, 세번째는 잘 모르겠다.

 

Struts2 에서 Ajax 사용하는 방법에는 3가지가 있다고 한다.

Ajax Tags

Jsp results

Plugins

 

실시간 디버거 모드를 지원한다.

우선 struts.properties 에서 devmode=true 설정한 다음 접속 하고자 하는

url 끝에 debug=xml or debug=console 붙여주면 xml 형식과 ognl형식으로 보여 준다. Xml 되는데 console 뭔가 안된다.

Ex) /Struts2/user/UserAction.action?debug=xml

debug=console you may need to relax any popup blockers

말인지 모르겠다.

Struts.xml 에서 constant 설정 가능 하며, web.xml에서도 가능하다.

<filter>
        <filter-name>struts</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
             <param-name>struts.devMode</param-name>
             <param-value>true</param-value>
        </init-param>
    </filter>

 

 

 

 

 

Zero configuration

Web.xml

<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  <init-param>
    <param-name>actionPackages</param-name>
    <param-value>com.foo.bar,com.baz.quux</param-value>
  </init-param>
</filter>

이런 식으로 원하는 패키지를 , 구분해서 설정하면 자동으로 Action으로 끝나는 파일을 설정한다. 패키지의 하위 패키지까지 설정

 

 

Struts-xxx-config.xml 파일에서 execute() 이외의 메소드를 기본 호출 하고자

한다면 다음과 같이 주면 되는거 같다.

안해 봐서.. 모르겠다… execute() 같이 있을 경우 우선순위는 어떻게 되는지

Execute 실행 하지 않는 것인지

<action name="delete"class="example.CrudAction"method="delete">

 

아래와 같이 이름만 적고 클래스를 정의하지 않는 경우

com.opensymphony.xwork.ActionSupport default 불러 진다.

<action name="Hello">
   // ...
</action>

액션이 존재 하지 않을때를 위해서 아래와 같이 default 사용할수 있다.

<package name="Hello"extends="action-default">
<default-action-ref name="UnderConstruction">
<action name="UnderConstruction">
  <result>/UnderConstruction.jsp</result>
</action>

 

아래와 같이 global-results 선언해서 사용할수도 있다.

 

<global-results>
  <result name="error">/Error.jsp</result>
  <result name="invalid.token">/Error.jsp</result>
  <result name="login"type="redirect-action">Logon!input</result>
</global-results>

 

EL식을 사용해서 아래와 같이 동적으로 할수도 있다.

 

private String nextAction;
public String getNextAction() {
    return nextAction;
}
<action name="fragment"class="FragmentAction">
  <result name="next"type="redirect-action">${nextAction}</result>
</action>

 

Exception 을 아래와 같이 처러 가능하다.

<struts>
    <package name="default">
        ...
        <global-results>
            <result name="login"type="redirect">/Login.action</result>
            <result name="Exception">/Exception.jsp</result>
        </global-results>
        <global-exception-mappings>
            <exception-mapping exception="java.sql.SQLException"result="SQLException"/>
            <exception-mapping exception="java.lang.Exception"result="Exception"/>
        </global-exception-mappings>
        ...
        <action name="DataAccess"class="com.company.DataAccess">
            <exception-mapping exception="com.company.SecurityException"result="login"/>
            <result name="SQLException"type="chain">SQLExceptionAction</result>
            <result>/DataAccess.jsp</result>
        </action>
        ...
    </package>
</xwork>

 

 

Jsp 페이지 에서 <table> 태그가 안먹히고

자동적으로.. <table> 태그나 <tr><td>태그가 생성되는 경우가 있다..

이것은 struts.properties 파일에 있는

 

struts.ui.theme=simple

struts.ui.templateDir=template

#sets the default template type. Either ftl, vm, or jsp

struts.ui.templateSuffix=ftl

 

struts.ui.theme = xhtml 기본 값인데.. 경우 이상해 진다.

Simple 주면 가장 기본적인 기능들만 가능 지는거 같다.

struts.ui.templateSuffix=ftl 옵션도 중요한데.. 이걸 괜히 jsp 변경

했다간 <s:property value=”name”/> 이런 struts 태크가 전혀 먹힌다.

부분은 아직 모르겠다. 

 

Simple 설정 경우에는 스트러츠 태그중에 되는 것이 많이 있다

by 나림 | 2007/09/06 14:03 | struts2 | 트랙백 | 덧글(0)

트랙백 주소 : http://gt1000.egloos.com/tb/718536
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶