2014-12-01 3 views
3

struts 2.3.3 및 spring 3.2.8을 사용하는 webapp에서 이상한 문제가 발생합니다.struts 속성 get 속성

JSP : 나는 게터 getName() 내 행동의 속성 이름을 정의

<%@taglib prefix="s" uri="/struts-tags"%> 
<s:property value="getName()" /> 
<s:property value="name" /> 

내 JSP 중 하나에서 나는 내 행동의 간단한 속성을 검색하기 위해 노력하고있어.

바람둥이 7에 webapp를 배포 할 때 첫 번째 속성이 표시되지 않는 경우 (완전히 비어 있음) 두 번째 속성이 올바르게 렌더링되는 경우가 있습니다. 둘 다 작동하려면 tomcat을 다시 시작하면됩니다.

초기화 문제가 의심되지만 tomcat 로그에서 아무 것도 찾을 수 없습니다. 심지어 재 컴파일을 강제로 tomcat 폴더에서 미리 컴파일 된 JSP를 제거하려고했습니다.

과거에 비슷한 문제가 발생 했습니까?

나는 그들이 일반적으로 나는이 방법에 내 모든 전화를 이동하려고합니다 action 속성을

<s:property value="name" /> 

에 액세스하는 두 번째 방법을 사용하는 스트럿 문서에 본 적이 있지만 궁금해서 왜 때로는 두 가지 방법이 작동하고 때로는 첫 번째는 ... 실패

UPD :

: 여기

액션 코드

public abstract AbstractAction extends ActionSupport implements ServletRequestAware, ServletResponseAware { 
    @Autowired 
    private PublisherComponent publisherComponent; 

    private String name; 

    /* ... */ 

    public String getName() { 
     return publisherComponent.getPublisher().getName(); 
    } 
} 

내 모든 조치는 AbstractAction의 하위 클래스입니다.

name 특성은 동작 자체 내에서 사용되지 않으며 JSP에서만 사용됩니다.

publisherComponent.getPublisher()은 MySQL에서 "Publisher"인스턴스를 가져오고, DAO 기능이 올바르게 작동합니다

+0

코드와 관련된 java 코드 (이름의 선언, getter 및 setter 및 다른 모든'name' /'getName()'통화 코드)를 게시하십시오. –

+0

원격 디버깅을 ' getName' 메소드? – mystarrocks

+0

struts.xml에서 정적 메서드 호출을 활성화했는지, dev 모드를 true로 설정하여 변경 사항을 확인 했습니까 –

답변

0

<s:property> 태그를 사용하는 경우 getter 또는 settter 메소드가 아닌 속성 이름 만 사용할 경우에만 작동합니다. 내부적으로 getter 메서드를 사용하여 속성 값을 매핑합니다. 두 번째 <s:property value="name" />이 올바르게 구현되었습니다. 항상이 접근 방식을 따르십시오.

+0

이것은 사실이 아닙니다. –