최대한 구체적으로 시도하겠습니다.json 반환 유형 및 HTML 반환 얻기 동일한 작업으로
두 가지 방법으로 액션을 만들었습니다. 하나는 아약스를 통해 호출되고 다른 하나는 일반 제출을 통해 호출됩니다.
요점은 정규 제출 요청을받을 수 없다는 것입니다. 나는 행동 속성 만 얻었습니다.
public class ClientAction{
@SMDMethod
public Map<String, Object> findClient(String myParam){
...
}
public String saveClient(){
Map<String, String[]> parameterMap = this.getRequest().getParameterMap();
}
}
saveClient 메소드의 getRequest는 null을 반환합니다. 그러나, 왜 ??? 나는 @SMDMethod
으로 선언하지 않았고 여기에 내가 모든 다른 선언을했던 struts.xml
<action name="client" class="myCompany.ClientAction">
<interceptor-ref name="customJSON"><param name="enableSMD">true</param></interceptor-ref>
<result type="json"><param name="enableSMD">true</param></result>
</action>
이다. 저는 각 메서드마다 하나씩 두 개의 클래스를 사용했지만 ClientAction과 ClientActionJSON에서는 유지 관리가 쉽지 않았습니다.
같은 클래스에서 두 가지 방법 (하나의 아약스와 다른 것)을 갖는 방법에 대한 의견.
<action name="xclient" class="myCompany.ClientAction" method="jsonMethod">
<result type="json"></result>
</action>
<action name="yclient" class="myCompany.ClientAction" method="htmlMethod">
<result type="dispatcher">/pages/y.jsp</result>
</action>
이제 단순히 CLIENTACTION에 두 가지 방법 jsonMethod()를 & htmlMethod()를 생성, 하나의 처리 JSON과 다른 HTML 응답 :
_action_ 주석을 사용하고 중첩 된 _result_ 주석을 사용하여 결과 유형을 지정하십시오. XML에서도 마찬가지입니다. 물론 이것은 하나의 클래스에 두 개의 액션을 추가합니다.이 경우에는 "enableSMD"가 필요하지 않은 의미 체계가 약간 변경됩니다. 나는 당신이 struts2-convention-plugin (필자는 항상 그것을 확실하게 덧붙인다)에 필요할 것이라고 생각한다. – Quaternion
그런 뜻인가요? interceptor-ref> "> 사실 '과 <작업 이름 ='같은 다른 하나의"클라이언트 "클래스 ="myCompany.ClientAction는 ">'당신은 여전히 enableSMD을 사용하고 –
Sergio1978
는이되지 않도록 내 말은 ... – Quaternion