2014-10-14 3 views
1

결과 입력에 대한 조치에 대해 정의 된 결과가 없습니다. Struts2 자동 완성을 사용할 때까지 오지 않았습니다.Struts 2에서 자동 완성을 사용한 후 조치에 대해 정의 된 결과가 없습니다.

이 내 자동 완성 코드 :

<s:form class="form-horizontal" style="margin:0 auto" role="form" theme="simple" action="Reports_open_cases"> 
<h4>Open Cases</h4> 

    ..some controls here 

<div class="form-group">    
<div class="col-xs-12 col-sm-4 col-md-4"></div> 
<div class="col-xs-12 col-sm-4 col-md-4" > 
<s:url id="advURL" action="xyz_action"/>  
<sj:select 
id="abc" 
name="abc" selectBoxIcon="true" 
href="%{advURL}" 
list="list_abc" 
listValue="name" 
listKey="Id " 
autocomplete="true" 
cssClass="form-control" 
/> 
</div> 

<div class="col-xs-12 col-sm-12 col-md-12 pull-right" style="text-align:right"><br> 
    <div class="modal-footer" style="margin:0px; padding:10px 0px 10px"> 
      <button class="btn btn-success" type="submit">Generate</button> 
      &nbsp;&nbsp;   
      <button class="btn btn-default" type="Reset">Reset</button> 
     </div> 
</div> 
</s:form>  

struts.xml (작업) : 다음 자동 완성에 드롭을 대체하는 다른

<constant name="struts.devMode" value="true" /> 
<constant name="struts.multipart.maxSize" value="20000000" />  
<package name="login" extends="struts-default,json-default" namespace="/"> 
    <interceptors> 
     <interceptor class="vercelon.actions.LoginInterceptor" name="loginInterceptor"> 
     </interceptor>  
     <interceptor-stack name="loginStack"> 
     <interceptor-ref name="loginInterceptor"/> 
     <interceptor-ref name="defaultStack"/> 
     <interceptor-ref name="fileUpload"><param name="maximumSize">10485760</param> 
    </interceptor-ref> 
    </interceptor-stack> 

    </interceptors>  

<action name="Reports_open_cases" class="vercelon.actions.Report" 
           method="Generate_OpenCases"> 
    <result name="success">/CMS/Reports_OpenCases.jsp</result> 
    <result name="ERROR">/Error.jsp</result> 
    <result name="input">/CMS/Reports_Menu.jsp</result> 
</action> 

<action name="xyz_action" class="vercelon.actions.Report" method="loadreports"> 
     <result name="success" type="json"></result> 
    </action> 

, 나는 어떤 기타 변경 작업을 수행하지 않았습니다. 내 struts.xml에 입력을 추가해도이 오류가 표시되지 않습니다. 그러나 내 양식 제출에 정의 된 작업은 작동하지 않습니다. 이 자동 완성을 추가 한 후에 어디에서 변경해야하는지 이해할 수 없습니다. 도와주세요.

+0

입력 결과를 추가 한 후에는 해당 페이지에 오류 (-s)를 표시하기 위해'fielderror' 및'actionerror' 태그를 사용하십시오. –

+0

그래, 내가 그럴거야 – Pradnya

+0

그것은 어떤 오류가 표시되지 않습니다 – Pradnya

답변

2

뷰 계층에서 일부 동작을 호출하면 해당 동작이 실행되기 전에 인터셉터가 실행됩니다.

조치에 기본 스택 (validationworkflow 인터셉터 포함)이 사용됩니다. 첫 번째 인터셉터는 ActionSupport을 확장하는 동작에 대한 유효성 검사를 수행하고, 두 번째 검사에서 오류가 발생하면 INPUT 결과가 반환됩니다.

그러나 액션 클래스에 대해 -validation.xml 또는 주석 기반 유효성 검사를 사용하면 메소드를 제외하도록 이러한 인터셉터를 구성하지 않은 한이 클래스의 메소드에 매핑 된 모든 동작이 위의 인터셉터에 의해 유효성 검사되거나 prefixed 기반 유효성 검사 방법 또는 건너 뛰기 유효성 검사 주석이 적용됩니다.

어떤 경우에도 사용되지 않은 코드에 대해 유효성 검사기를 실행하지 않으려면 이러한 인터셉터를 사용하지 않고 실행하거나 인터셉터 스택을 재구성해야합니다.

json 결과를 반환하는 동작은 term 대신 필드의 유효성 검사가 필요하지 않습니다. 인터셉터 구성을 구성하고 재정의하는 방법 : 질문 : How to get result on same page why input is required?.

Select Box with JSON Result as Autocompleter을 사용하는 작업 예제.
The actions source code used in the example.

+0

@R 고마워요. '을 추가하여 입력 오류 문제를 해결했습니다. 그러나 지금은 자동 완성의 가치를 액션 클래스에 전달하는 것이 아닙니다. – Pradnya

+0

어느 값입니까? 액션의 클래스를 게시하십시오. 두 세트레이터가 있어야합니다. –