최근 프로젝트 진행 중에 JavaScript를 사용하여 양식을 제출하는 데 문제가 발생했습니다. 이전에 여러 번 해봤지만, 이번에는 JavaScript를 사용하여 양식을 제출하는 여러 가지 방법을 요약하고 비교했습니다. 이 프로젝트에 가장 적합한 방식을 선택했습니다.
저는 현재 Sun Communication Suite용 사용자를 생성하기 위한 소규모 시스템을 작업하고 있습니다. 가장 쉬운 방법은 다음과 같은 연결을 사용하는 것입니다. 첫 번째 페이지 필요한 모든 데이터를 하이퍼링크에 쓰세요. 관찰해 보면 위의 링크에서 currentPage만 변경되고 다른 매개변수인 event, 키워드, searbyBy 및 cn은 변경되지 않은 것을 알 수 있습니다. 따라서 이러한 변경되지 않은 매개변수를 양식에 캡슐화할 수 있는지 생각했습니다. 사용자가 위의 하이퍼링크를 클릭하고 JavaScript를 사용하여 양식을 제출하면 자연스럽게 서버에 액세스하게 됩니다.
양식:
<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>
로그인 후 복사
양식을 제출하는 과정에서 currentPage 매개변수만 JavaScript에 전달하면 되므로 위 링크를 다음 양식으로 변경했습니다.
<a href=# onclick=document.pagination.currentPage.value="+pages[j]+";document.pagination.submit();><span style='color: red;'>["+pages[j]+"]</span></a>
로그인 후 복사
모두 document.pagination.currentPage.value="+pages[j]+";를 document.pagination.submit(); 앞에 작성하여 사용자가 양식을 제출하기 전에 currentPage 매개변수를 작성하도록 주의해야 합니다. 필요한 값으로 수정되었습니다. 이런 식으로 연결을 사용하여 양식을 제출했지만 문제가 발생했습니다. 여러 페이지에서 위 코드를 시도해야 합니다. JavaScript를 균일하게 작성할 수 있다면 더 쉬울 것입니다. 앞으로 전체 시스템을 유지 관리하기 위해 JavaScript 함수를 작성했습니다.
function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}
로그인 후 복사
로그인 후 복사
그런 다음 하이퍼링크의 onclick 이벤트에 이 함수를 사용합니다.
["+pages[j]+"], 전체 단락을 볼 수 있습니다. 코드가 훨씬 간단합니다.
그래서 정리해봤습니다. Javascript를 사용하여 양식을 작성하는 방법은 아마도 두 가지가 있을 것입니다. (현재 제가 이해한 바에 따르면)
1. document.formName.submit();
2. var 형식 = document.getElementById(id);
form.submit();
다음번에는 JNDI를 사용하여 페이징을 구현하는 방법을 여러분과 공유하고 싶습니다. 참고하실 수 있도록 이번에 코드를 첨부했습니다.
commons.js
function submitForm(id,currentPage){
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
//currentPage=100;
//var currentPage = document.pagination.currentPage.value;
//alert(currentPage);
document.pagination.currentPage.value=currentPage;
var form = document.getElementById(id);
form.submit();
}
로그인 후 복사
로그인 후 복사
mailingListMemberAdd.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.util.LinkedList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="my.gov.rmp.webmail.domain.User" %>
<%@ page import="my.gov.rmp.webmail.util.Pager" %>
Add Member to Mailing List:<%=request.getAttribute("cn")%>
Add new members to mailing list: <%=request.getAttribute("cn")%>
Pages:
<form name="pagination" id="pagination" action="UserServlet" method="get">
<input type="hidden" name="currentPage" value="1"/>
<Input type="hidden" name="cn" value="<%=request.getAttribute("cn")%>"/>
<input type="hidden" name="keyword" value="<%=request.getAttribute("keyword")%>"/>
<input type="hidden" name="searchBy" value="<%=request.getAttribute("searchBy")%>"/>
<input type="hidden" name="event" value="SEARCH_USER_FOR_MAILING_LIST">
</form>
<%
int[] pages = pager.getPages();
String keyword = request.getAttribute("keyword").toString();
String searchBy = request.getAttribute("searchBy").toString();
if(pager.isHasFirst()){
out.println("First Page ");
}
if(pager.isHasPrevious()){
out.println("Prev Page ");
}
for(int j=0;j["+pages[j]+"]");
}else {
out.println("["+pages[j]+"]");
}
}
if(pager.isHasNext()){
out.println("Next Page ");
}
if(pager.isHasLast()){
out.println("Last Page ");
}
%>
<%
} else {
//make the mailing list member availabe when user are trying to re-run the search
//request.setAttribute("members", members);
%>
No results are matched your keyword or the user that you are looking for is already a member of this mailing list, please specify another keywork and ">Search Again
<%
}
%>
로그인 후 복사