2007년 09월 06일
struts2 개발 메모3
requiredstring = $\{getText(fieldName)} is required.password = Passwordusername = User NameAction 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가지가 있다고 한다.
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)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]