struts2에서 변수를 넘어온 녀석을
iterator 내에서 반복하려니 이상하게 안되는 현상이 발생
검색을 해보니 s:set을 통해 다른 이름으로 값을 저장하여 사용하면 회피 가능하다고 한다.

버그성이려나?

[링크 : http://ggoreb.tistory.com/96]
Posted by 구차니
스트러츠 사용중에
메뉴를 구현하기 위해서 꽁수를 부리려고 하는데..
현재 떠있는 페이지의 경로를 받아오는 방법이 묘연...하다

request.contextPath()를 하면
struts2 + tiles 사용시 타일스 파일이 나오질 않나 개판인데..

오오 스택느님!!!

request.getHeader("referer");

[링크 : http://stackoverflow.com/questions/3481989/how-to-get-the-request-url

근데 먼가 이상해서 실험을 해보니
말그대로 레퍼러..

메뉴에서 사용시 처음에 띄우면 유입 경로가 없기에 null Pointer exception을 띄우며 장렬히 전사한다. 



결론 : 다음글을 확인하시오
2014/05/27 - [Programming/jsp] - 스트러츠2 사용시 브라우저 상의 현재 경로얻기 2
Posted by 구차니


구글 코드에서는 여러가지 소스코드 관리 서비스를 제공하는데
크게 SVN / GIT / Mercurial 세가지를 제공한다.

많이 써오던게 SVN 이라서 선택했지만
머큐리얼이 은근히 좋아서(로컬에 저장소가 있으니 소스 코드 비교가 초광속 ㄷㄷ)
이전해볼까 해서 실험을 해봤더니.. 아직 시간상이 문제로 제대로 적용된게 아닌지 모르겠지만

일단 svn -> mercurial로 프로젝트가 이전되는 건 아니고
svn 따로 mercurial 따로 저장소가 생성되고
svn을 먼저 생성후 mercurial로 변경시에도 svn은 여전히 접속이 가능하다. 

'프로그램 사용 > Version Control' 카테고리의 다른 글

tortoiseHG , git vs mercurial 관련 문서  (0) 2014.06.08
svn to git migration 가이드  (0) 2014.06.02
mercurial SCM  (0) 2014.05.02
git 간편 설명서  (0) 2014.03.06
TortoiseSVN 기본 트리구조 추가!  (0) 2013.12.26
Posted by 구차니
데이터가 int 형일 경우 null이 면 쥬금
되도록이면 DB에서 constraint 를 사용해 not null을 해주는게 ibatis에는 좋을 듯 하다.

[링크 : http://silver-lining.tistory.com/39]

 

'프로그램 사용 > ibatis & mybatis' 카테고리의 다른 글

ibatis null  (0) 2014.05.29
ibatis 쿼리에 list 타입 인자로 넣기  (0) 2014.05.28
ibatis namespace  (2) 2014.05.22
ibatis2 map  (0) 2014.05.21
ibatis / log4j 를 이용한 sql문 덤프  (0) 2014.05.21
Posted by 구차니
xml을 통해 sql문들을 불러올 키인 'name' 이 중복될 경우 키가 중복된다고
Duplicate <sql>-include ... found 에러가 뜨게 된다.

com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/sql'.  Cause: com.ibatis.sqlmap.client.SqlMapException: Duplicate <sql>-include 'select-all' found.
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
com.ibatis.sqlmap.engine.builder.xml.SqlMapParser.parse(SqlMapParser.java:40)
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$10.process(SqlMapConfigParser.java:270)
com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)
com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:51)
com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:46)
com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
account.joinAction.<init>(joinAction.java:45)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
java.lang.Class.newInstance(Unknown Source)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:123)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:154)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:275)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365)
com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38)
com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:83)
com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:74)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422)
 

이런 문제는 namespace를 통해 해결할 수 있으나
namespace를 쓰기 위해서는 ibatis 설정에서 사용이 가능하도록 설정 해주어야 한다.
useStatementNamespaces 는 기본값이 false이다.
Example: useStatementNamespaces=”false”
Default: false (disabled)
 
[링크 : http://ibatis.apache.org/docs/dotnet/datamapper/ch04s03.html


/src/sqlMapConfig.xml

<sqlMapConfig>
<properties resource="/dbconnect.properties" />
<settings cacheModelsEnabled="true" enhancementEnabled="true"
lazyLoadingEnabled="true" maxRequests="1" maxSessions="1"
maxTransactions="1" useStatementNamespaces="true" />

<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}" />
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</dataSource>
</transactionManager>

<sqlMap resource="/sql/external.xml"/>
</sqlMapConfig> 

/src/sql/external.xml

<sqlMap namespace="user_namespace">
</sqlMap>

[링크 : http://www.okjsp.net/seq/89041]
Posted by 구차니
스트럿츠도 jsp니까.. 기본적으로 포함가능한 방법이 있지만..
<jsp:include
include는 소스가 아닌 결과를 삽입
일반적으로 flush=false로 작업함 

<%@ include
include directive는 소스를 불러옴(차이점 주의!) 

위의 두 가지 방법을 사용해도 action 페이지는 불러올 수 없다.
즉, jsp:include는 제어권을 넘겼다가 받아 오지만 실제 존재하는 경로상의 파일에 접근하는 것이기 때문인데..


아무튼.. s:action 태그를 이용하여 include 하 듯 불러올 수는 있다.

<s:action name="myAction"  ignoreContextParams="true" executeResult="true">
        <s:param name="foo" value="bar"/>
</s:action> 
[링크 : http://ssongka.egloos.com/2371453]
[링크 :
http://stackoverflow.com/questions/374099/struts2-parameters-between-actions

+
원래는 스트럿츠에서 타일스에 연동하는 경우
타일스 에서 스트럿츠 페이지를 다시 불러 끼워 넣으려고 한건데..
걍 타일스를 드러내는게 나을듯 해졌다 -_-a
느리기도 느리지만.. 제대로 안되는 것 봐서는 스트럿츠->타일스->스트럿츠 순으로 호출되는거라 정상적인 건 아닐듯.. 


---
2014.05.23 추가

<s:action name="myAction"  flush="true" ignoreContextParams="true" executeResult="true">
        <s:param name="foo" value="bar"/>
</s:action> 


flush를 안해줘서 안된듯 -_-
결론은 된다 
Posted by 구차니
스트럿츠에서 메소드를 통해 타일즈 레이아웃을 변경시킬수 있으나..
내가 의도했던 것과는 달라서 일단 봉인 -_-a

[링크 : http://syaku.tistory.com/174]
Posted by 구차니

'프로그램 사용 > struts2 tiles' 카테고리의 다른 글

struts2 페이지 포함하기  (0) 2014.05.22
스트럿츠 동적 레이아웃 구성하기  (0) 2014.05.22
struts2 result type input  (0) 2014.05.19
struts2 result type  (0) 2014.05.17
struts2 / tiles 연동시 에러  (0) 2014.05.16
Posted by 구차니
일반적인 상황에서는 ibatis2를 통해 인자를 하나만 넘겨줄수 있는데
2개 이상 필요할 경우에는 DAO를 통해 클래스로 넘기거나
Map 객체를 통해 여러개의 값을 넘겨줄 수 있다.

[링크 : http://okjsp.net/bbs?seq=206384]
[링크 : http://masachi.tistory.com/258]
Posted by 구차니
ibatis의 단점(?)아닌 단점으로는
실제로 값이 넘어가는지 알기가 어렵다는 점인데..
log4j를 이용하여 로그로 콘솔을 통해 디버깅이 용이하도록
SQL 문 자체를 출력할 수 있다.

DEBUG [http-8080-3] -Created connection 1249656.
DEBUG [http-8080-3] -{conn-100000} Connection
DEBUG [http-8080-3] -{conn-100000} Preparing Statement:       SELECT * FROM SBOARD2      WHERE boardId = ? ORDER BY ref DESC, re_step ASC  
DEBUG [http-8080-3] -{pstm-100001} Executing Statement:       SELECT * FROM SBOARD2      WHERE boardId = ? ORDER BY ref DESC, re_step ASC  
DEBUG [http-8080-3] -{pstm-100001} Parameters: [null]
DEBUG [http-8080-3] -{pstm-100001} Types: [null]
DEBUG [http-8080-3] -{rset-100002} ResultSet
DEBUG [http-8080-3] -Returned connection 1249656 to pool. 

 # Global logging configuration
log4j.rootLogger=ERROR, stdout

# SqlMap logging configuration
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.BasicDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG

log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

# Console output
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] -%m%n

[링크 : http://northface.tistory.com/15]
[링크 : http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.17/log4j-1.2.17.zip]

'프로그램 사용 > ibatis & mybatis' 카테고리의 다른 글

ibatis 쿼리에 list 타입 인자로 넣기  (0) 2014.05.28
ibatis / mybatis 데이터가 비어있는 경우(null)  (0) 2014.05.23
ibatis namespace  (2) 2014.05.22
ibatis2 map  (0) 2014.05.21
ibatis - db framework  (0) 2014.05.14
Posted by 구차니