2013-06-19 3 views
1

에서 "입력"피 반환 struts.xml에서 작업 구성이 다음과 같은 경우 아무 문제가 없습니다 자동으로 스트럿츠

<action name="customer-form"> 
    <result name="success" type="tiles">/customer.tiles</result> 
</action> 

나는 액션 구성에 대한 작업 클래스에 액세스 할 때 문제가 온다 (struts.xml). 작업 클래스에서 인스턴스화 할 때 적절한 값을 표시하는 드롭 다운 옵션을 양식에 표시하기 때문에 양식을 표시하기 전에 클래스에 액세스합니다. 그러나 그것은 "입력"을 반환 할 것이고 그것을 처리해야합니다. 동작 클래스

있어서

public String addCusto(){ 
    custoType = new ArrayList<String>(); 
    custoType.add("ABC"); 
    custoType.add("EFG"); 
    System.out.println(custoType.size()); 
    return SUCCESS; 
} 

struts.xml : JSP

<s:form action="savecusto" method="post" validate="true"> 
<s:select 
    label="Customer Type" 
    list="custoType" 
    emptyOption="true" 
    headerKey="-1" 
    headerValue="None"/> 
<s:textfield name="custo.name" key="custo.name" size="20" /> 
<s:textfield name="custo.email" key="email" size="20" /> 
<s:textfield name="custo.address" key="address" size="20" /> 
<s:textfield name="custo.phone" key="phone" size="20" /> 
<s:submit method="addCustomer" key="label.add.customer" align="center" /> 

<action name="customer-form" class="com.satunol.struts.template.action.CustomerAction" method="addCusto"> 
    <result name="success" type="tiles">/customer.tiles</result> 
    <result name="input" type="tiles">/customer.tiles</result> 
</action> 

양식

결과가 좋지 않습니까? addCusto 메서드가 실행되지 않고 아직 제출되지 않았지만 양식이 직접/자동으로 유효성이 검사됩니다.

어떻게 해결할 수 있습니까?

+0

읽어? –

+0

예, 오타입니다. –

+0

@MahadiSiregar 당신은 당신의 JSP 코드를 게시하고 달성하고자하는 것을 더 설명 할 수 있습니까? –

답변

1

조치가 input 결과를 리턴 할 수 있으면 struts.xml 구성에서 처리해야합니다. 일부 유효성 검사 오류가 발생하면

input 결과는 검증 인터셉터에 의해 반환되는, 또는 당신이 Date 필드에 int을 설정하려고하면 예를 들어, 작업의 속성의 잘못된 유형을 설정하려고 할 때.

인터셉터가 다음 인터셉터 (또는 액션이 ​​마지막 일 경우)로 진행하는 대신 결과를 반환하면 호출 된 Action 메소드는 도달하지 않기 때문에 실행되지 않습니다.

코드와 사용자의 요청이 정확하지 않은 부분을 확인하고 input 결과를 반환하십시오.

P.S : 나는 액션 클래스에서 인스턴스화로 적절한 값을 표시하는 형태의 드롭 다운 옵션을 원하기 때문에

경우

와 나는 양식을 표시하기 전에 클래스에 액세스 할 수 있습니다.

당신은 당신이 어떤 방법 (또는 input 결과가 반환 될 때), 당신은 검증 요격하기 전에 실행 준비 인터셉터가 운영하는 대한 prepare() 방법을 사용해야의 실행 전에 필드를 미리 채울 필요가 있음을 의미한다. 이렇게하면 유효성 검사가 실패하더라도 코드 prepare()이 실행됩니다.

더 많은 정보를 들어

, 그것은 두`success` 결과를 오타 How do we repopulate controls when validation fails

+0

를 struts.xml의 작업 구성에 추가하면 해결됩니다. 그것이 올바른 방법일까요? –

+0

예, 기본적으로 기본 인터셉터 스택에 있습니다. 스택이 실행 중이 아니면 스택이없는 경우 커스텀 인터셉터 스택을 생성했기 때문입니다. 기본값을 사용하거나 작성한 사용자 정의 스택에 Prepare Interceptor를 포함시켜야합니다. –

+0

예, 기본값으로 포함시키지 않고 기본 사용자 정의 인터셉터를 만듭니다. 고마워, 내 문제를 해결해. –