Spring Web MVC에서 Ajax JQuery를 사용하는 방법
저는 애플리케이션에 Spring Web MVC를 사용하고 있습니다.
JSP View에 드롭다운 목록이 하나 있습니다. 다음 요청에서 오는 것입니다.savegroup.htm
<bean name="/savegroup.htm" class="com.sufalam.mailserver.presentation.web.GroupSaveController">
<property name="sessionForm" value="true"/>
<property name="commandName" value="Group"/>
<property name="commandClass" value="com.sufalam.mailserver.presentation.bean.GroupViewBean"/>
<property name="formView" value="common"/>
<property name="successView" value="managegroup.htm"/>
<property name="userSecurityProcessor" ref="IUserSecurityProcessor"/>
<property name="domainsSecurityProcessor" ref="IDomainsSecurityProcessor"/>
<property name="forwardingsSecurityProcessor" ref="IForwardingsSecurityProcessor"/>
</bean>
JSP 페이지:
<form:form name="groupSaveForm" action="savegroup.htm" commandName="Group" method="POST">
Group Name :
<form:input path="source"/><br><br>
Domain List :
<form:select id="domains" onchange="javascript:getUser();" path="domainsList" multiple="false" size="1">
<form:option value="-" label="--Select--"/>
<form:options items="${domainsList}" itemValue="domain" itemLabel="domain"/>
</form:select>
</form:form>
이제 내 드롭다운 목록의 변경 이벤트에서 서버에서 관련 사용자를 가져와 목록 상자에 해당 사용자 목록을 표시해야 합니다.
그럼 jQuery AJAX call은 어떻게 사용하면 되나요?
요청을 받고 관련 사용자를 불러오는 서버 사이드 코드는 어디에서 처리해야 합니까?
내 JSP에서 다가오는 사용자 집합을 표시하는 방법은 무엇입니까?
이를 해결하기 위한 여러 가지 방법이 있습니다.당신에게 확실한 안내를 드리기 전에 몇 가지 질문에 대한 답이 필요합니다.
ajax 요청에 대해 XML과 JSON을 선호하십니까?
한 가지 주의할 점은 제가 여러분에게 무엇을 하라고 말할 것인지에 대해 구체적인 것은 없습니다.jquery 비동기 요청에 대한 응답을 jquery(XML 또는 json, 이상적인 경우)에 유용한 형태로 다시 보내야 하지만 서버 측에서는 HTML 대신 XML 또는 json을 렌더링하는 보기를 사용하는 일반 요청처럼 보입니다.개인적으로 JSON을 사용하는 것을 선호합니다. 특히 스프링-json 패키지는 매우 잘 작동하고 작동 원리를 이해하면 사용하기 쉽기 때문입니다.저는 http://spring-json.sourceforge.net/ 에서 구입할 수 있는 spring-json 패키지를 추천합니다. 모든 설명서를 읽어 보십시오. 그리고 어떻게 작동하는지 매우 잘 알고 있을 것입니다.
가장 기본적인 형태로 솔루션은 다음과 같은 작업을 수행해야 합니다.
spring-json 뷰 중 no를 사용하는 뷰를 구성합니다.대부분의 경우 sojoView를 선호합니다.
서버에 비동기 요청을 하면 사용자 목록이 반환됩니다.사용자 집합을 제공하는 데 필요한 정보가 드롭다운의 선택된 값뿐인 경우 쿼리 문자열에서 선택한 도메인으로 GET 요청을 발행하는 것은 매우 간단합니다.서버측에서는 수신 요청에 매핑하여 json이나 xml을 다시 보내 jquery로 처리할 컨트롤러가 필요합니다.기본적으로 GET 방식이든 POST 방식이든 완전히 정상적인 컨트롤러를 작성하고 json 뷰의 이름을 반환하기 전에 사용자 목록을 모델에 추가할 수 있습니다.spring-json에서 제공하는 json view 3종은 당신의 리스트에 있는 콩을 json 구조로 만들어 고객에게 전달할 것입니다.들어오는 매개변수를 파싱/변환하기 위해 모든 표준 DataBinder 기능을 사용할 수 있으며, 모든 유효성 검사 오류는 json 응답에 필드 또는 전역 오류 메시지를 생성하여 클라이언트 측 코드가 사용자에게 제공할 수 있습니다.
가장 간단한 경우에, 제 코드는 이렇게 보일 것입니다 (이것은 모두 봄 2.5입니다).주석을 사용하지만 앱 컨텍스트에서 xml 구성으로 동일한 작업을 수행할 수 있습니다.
@Controller
public class AjaxController {
@RequestMapping("/some/path/selectDomain.json", method=RequestMethod.GET)
public ModelAndView processDomainSelection(@RequestParam(value="domain", required="true") String selectedDomain) {
List<User> users = service.loadUsersForDomain(selectedDomain);
ModelAndView mv = new ModelAndView("sojoView", "users", users);
return mv;
}
}
POST 요청을 통해 처리하고, 제출된 domainValue에서 실제 Domain 객체를 로드하고 싶다면, 다음과 같은 사인을 할 수 있습니다.
@Controller
@RequestMapping("/some/path/selectDomain.json")
public class SelectDomainController {
public class FormBean {
protected Domain domain;
public Domain getDomain() {
return domain;
}
public void setDomain(Domain domain) {
this.domain = domain;
}
}
@ModelAttribute("command")
public FormBean getCommand() {
return new FormBean();
}
@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request) {
// this custom editor knows how to load a Domain object from the domainValue string
// if it fails to convert, it can throw an exception, which will result in
// an error being logged against the "domain" field
binder.registerCustomEditor(Domain.class, "domain", new DomainLookupEditor(domainService));
}
@RequestMapping(method=RequestMethod.POST)
public String selectedDomain(@ModelAttribute("command") FormBean command,
BindingResult result,
Model model,
HttpServletRequest request) {
if (result.hasErrors()) {
return "sojoView";
}
Domain domain = command.getDomain();
List<User> users = domain.getUsers();
model.addAttribute("users", users);
return "sojoView";
}
}
ajax 요청 발행은 jquery ajaxForm 모듈을 사용하면 됩니다.ID가 "selectDomainForm"인 양식이 있다고 가정하면 다음과 같은 모양의 js가 필요합니다.
function selectDomainSuccessHandler(json) {
// it is possible to send back a 200 response after failing to process the request,
// in which case, the sojoView will have set success=false in the json
if (json.success == true) {
// parse json here and render it into html in your document
} else {
// get field error and global error from json and present to user
}
}
function(selectDomainErrorHandler(xhr, returnCode) {
// do something based on the return code
}
var options = {
success: selectDomainSuccessHandler,
error: selectDomainErrorHandler,
dataType: 'json'
};
$('selectDomainForm').ajaxForm(options);
ajax Form 모듈의 설명서를 구글에서 검색하여 특정 필드만 가져오고 보내는 방법 대신에 게시하는 방법을 알고 폼의 의도된 URL이 아닌 URL로 보낼 수 있습니다.
페이지에 사용자 목록을 표시하려면 코드에 "userList"와 같은 ID를 가진 div가 있고 반환된 json의 사용자를 반복하여 각 사용자에 대한 html을 만들 수 있습니다.html을 "userList" div에 추가하면 브라우저에 나타납니다.
URL의 컨트롤러를 정의합니다.
POST 방법을 사용하려는 경우:
content.load('URL(.)or(#)sectionToLoad', {}, function(event) {
...
});
또는 GET 메서드를 사용하려는 경우:
content.load('URL(.)or(#)sectionToLoad', function(event) {
...
});
다음과 같은 기능으로 호출합니다..click
아니면.submit
그것뿐입니다
언급URL : https://stackoverflow.com/questions/1673656/how-to-use-ajax-jquery-in-spring-web-mvc
'source' 카테고리의 다른 글
각도를 개선하는 방법많은 수의 DOM 요소를 포함한 JS 성능 (0) | 2023.10.18 |
---|---|
jquery getResponseHeader는 항상 '정의되지 않음'을 반환합니까? (0) | 2023.10.18 |
MySQL DB에서 고객 정보를 암호화하는 가장 좋은 방법은? (0) | 2023.10.18 |
늘 레코드를 포함하는 왼쪽 조인 (0) | 2023.10.18 |
Sqalchemy에서 열거를 하는 가장 좋은 방법은? (0) | 2023.10.18 |