![](/img/trans.png)
[英]How many sessions can be managed by an Java Application in Struts 2?
[英]How can I save custom variables into the request in a Struts application in Java?
我正在使用Struts 1.2和J2EE 1.4。 我對Struts和Java很陌生,所以希望我的問題有一個簡單的解決方案。 我有一個這樣的頁面設置:
<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();
因此,在我的Action中,我希望能夠將所有內容發送回相同的輸入forward
無論是否存在驗證錯誤。 但是我想檢查jQuery中的jsp頁面以檢查應該顯示哪個對話框:
這是我的行動:
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;
有沒有辦法在Action
中設置一個變量,可以在調用ActionForward
后在jsp
頁面中檢索該變量。 最好通過jQuery在$(document).ready
函數中訪問?
您將使用普通的Struts和/或servlet規范機制。
您可以檢查是否有錯誤; 它們存儲在"org.apache.struts.action.ERROR"
鍵下的請求中; 你不需要特別添加任何東西,但如果你真的想要,你可以。
我更喜歡將非表單數據存儲為請求屬性:
request.setAttribute("haveErrors", true); // Or false, obviously.
然后,您需要在JSP中從請求中獲取數據,並將其解釋為JavaScript:
$(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};
});
我不確定我是否理解正確的問題,但如果你的意思是,有沒有辦法讓你把變量從Action類傳遞到JSP,那么是的。
在return語句之前的Action類中,將變量設置為請求上下文,如下所示:
request.setAttribute("successfulRegistration", "true");
永遠記住,JSP在服務器端進行編譯,然后在到達瀏覽器進行渲染或處理javascript之前,將任何HTML添加到響應中。 所以,
以JSP為例:
<script type="text/javascript>
var success = <% (String) request.getAttribute("successfulRegistration"); %>
</script>
因為變量是一個字符串,它可以縮短為:
<script type="text/javascript">
var success = <%=request.getAttribute("successfulRegistration")%>
</script>
javascript中的成功變量在到達瀏覽器之前已經在服務器端的JSP編譯時分配了變量。
JSP可以通過請求,會話和應用程序上下文與Action類共享數據。
Request - request.getAttribute(...)
Session - request.getSession().getAttribute(...)
Application - application.getAttribute(...)
類似地,在Action類中可以設置這些 - ServletContext類訪問應用程序上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.