2011-12-22 2 views
0

저는 Struts 1.2와 J2EE 1.4를 사용하고 있습니다. 저는 Struts와 Java에 익숙하지 않았습니다. 제 문제에 대한 간단한 해결책이 있기를 바랍니다. 나는이 같은 설정 페이지가 있습니다커스텀 변수를 자바의 Struts 애플리케이션의 요청에 어떻게 저장할 수 있습니까?

<div class="success"> 
    HTML for success 
</div> 
<div class="error"> 
    <p>We are experiencing technical difficulties at this time. Please try your request again later.</p> 
</div> 
<div id="contact-form-block"> 
    <html:form action="/reg" id="contactform"> 

    <br /><html:text property="firstName"/><html:errors property="firstName"/> 
     <p><input type="image" src="images/reset_btn.png" id="reset" name="reset" alt="Reset" /><input type="image" src="images/submit_btn.png" id="submit" name="submit" alt="Submit" /></p> 
    </div> 

</html:form> 
</div> 

원래 성공, 오류 및 div의 모든 숨겨진 저희에게 연락하십시오. 에 관계없이 검증이 있었다 여부

$('.success, .error, .success_header, .error_header').hide(); 
$('form#contactForm').show(); 

그래서, 내 행동에, 나는 동일한 입력 forward에 다시 모든 것을 보낼 수 있도록하려면 : 나는 문의 양식이 같은 모달 대화 상자에서 클릭에 표시해야 오류 여부. 하지만 나는 표시되어야하는 대화 확인하기 위해 jQuery를에서 JSP 페이지에 수표를 갖고 싶어 :

  1. 성공 대화 또는
  2. 연락처 - 우리가 오류 대화 상자
  3. if ("reg".equalsIgnoreCase(contactUsForm.getAction())) {    
    
         ActionMessages errors = getErrors(request); 
    
         errors = validate(contactUsForm); 
    
         if (errors.isEmpty()) { 
    
          //Save some variable to the request/response to say that registration was successful 
    
         } else { 
          //save something to say that registration was not successful 
          saveErrors(request, errors); 
         } 
        } 
        return actionForward; 
    

    에서 변수를 설정하는 방법이 있나요 : 여기

내 작업입니다 ActionForward이 호출 된 후 jsp 페이지에서 검색 할 수있는 Action입니다. 가급적이면 $(document).ready 함수에서 jQuery로 액세스 할 수 있습니까?

+0

제안 : struts2로 가면 Struts1과 많이 다르므로 궁극적으로 Struts2로 전환하게 될 것입니다. Struts2는 Struts1에 대한 이전의 경험을 필요로하지 않으므로 학습하기가 매우 쉽습니다. –

+0

@XCoder 내가 할 수 있으면 좋겠다. 불행히도 나는 이것을 위해 사용할 수있는 기술을 결정하지 못했습니다. – Rondel

답변

1

정상적인 Struts 및/또는 서블릿 스펙 메커니즘을 사용합니다.

오류가 있는지 여부를 확인할 수 있습니다. 그들은 요청에 "org.apache.struts.action.ERROR" 키 아래에 저장됩니다. 특별히 아무것도 추가 할 필요는 없지만, 정말로 원한다면, 그렇게 할 수 있습니다.

내가 아닌 폼 데이터가 요청 속성으로 저장하는 것을 선호 :

request.setAttribute("haveErrors", true); // Or false, obviously. 
당신은 다음 JSP에 요청에서 데이터를 얻을 필요가 있고, 자바 스크립트로 해석

:

$(function() { 
    // Use normal JSP EL; haveErrors should display as a bare string, 
    // which is valid JS. Can modify as necessary if need be. 
    var haveErrors = ${haveErrors}; 
}); 
+0

감사합니다. 이것은 트릭을해야합니다. 에러에 대한'request'를 체크하는 것이 더 합리적 일지 모르지만'setAttribute'는 제가 얻고 자하는 좀 더 많은 것들을 저장하는데 도움이 될 것입니다. – Rondel

+0

@Rondel 또한 키 값에 상수를 사용하는 것이 좋습니다. 단지 간단하게 유지하고 싶었습니다. 어떤 사람들은 행동 양식의 견해를 위해 모든 것을 유지합니다. 그것은 선호의 문제입니다. 죄송합니다. 고대 기술로 일해야합니다. –

1

질문을 이해할 수 있을지 모르겠지만, 그렇다면 Action 클래스에서 JSP로 변수를 전달할 수있는 방법이 있는가, 그렇다. return 문 전에 Action 클래스에서

같은 아래의 요청 컨텍스트에 변수를 설정합니다

request.setAttribute("successfulRegistration", "true"); 

는 항상 JSP는 서버 측에서 컴파일됩니다 것을 기억하고 어떤 HTML은 전에 응답에 추가 렌더링 될 브라우저 또는 자바 스크립트가 처리됩니다.따라서, 예를 들어 같은 JSP에서

:

변수가 단축 될 수있는 문자열 이후의
<script type="text/javascript> 
var success = <% (String) request.getAttribute("successfulRegistration"); %> 
</script> 

:

<script type="text/javascript"> 
var success = <%=request.getAttribute("successfulRegistration")%> 
</script> 

자바 스크립트의 성공 변수가 이미 변수가있을 것입니다 브라우저에 도달하기 전에 서버 측에서 JSP 컴파일 시간에 지정됩니다.

JSP는 요청, 세션 및 응용 프로그램 컨텍스트를 통해 Action 클래스와 데이터를 공유 할 수 있습니다.

Request - request.getAttribute(...) 
Session - request.getSession().getAttribute(...) 
Application - application.getAttribute(...) 

마찬가지로 작업 클래스에 설정 될 수 이들은 - 애플리케이션 컨텍스트는 클래스 ServletContext에 의해 액세스된다.

+0

감사합니다. 이것은 도움이된다. – Rondel

관련 문제