[SPRING] javascript에서 색인을 사용하여 스프링 모델 속성 목록 요소 가져 오기
SPRINGjavascript에서 색인을 사용하여 스프링 모델 속성 목록 요소 가져 오기
미안 미안하지만 다른 곳에서 물어 본 적이 있지만 주위를 둘러 보았습니다. 몇 가지 해답을 찾았지 만 완전한 예는 아니며 여전히이 질문에 의문이 있습니다.
그래서, 나는 내 JSP로 내 스프링 컨트롤러에서 Autopopulating 목록을 추가하고 내 javascript / jquery 함수 안에 목록에 항목을 추가하고 싶습니다. 가능한가?
기능을 테스트하기 위해 아래 코드를 시도했지만 작동하지 않았습니다 (목록 요소가 생성 된 html에 전혀 표시되지 않았습니다). 그래서 Im은 javascrit / spring / jsp 구문을 망쳐 놓는 지 아니면 그냥 가능하지 않은지 확실하지 않습니다.
다음은 코드입니다.
컨트롤러 코드 :
@RequestMapping(value="/create_custobject.html",method = RequestMethod.GET)
public ModelAndView showCreateCustObjectPage() {
Map<String, Object> model = new HashMap<String, Object>();
CreateObjectForm form = new CreateObjectForm();
model.put("createObjectform", form);
return new ModelAndView("create_custobject", model) ;
}
양식 코드 :
public class CreateObjectForm {
private AutoPopulatingList<Criteria> ruleArray = new AutoPopulatingList<Criteria>(Criteria.class);
public AutoPopulatingList<Criteria> getRuleArray() {
return ruleArray;
}
public void setRuleArray(AutoPopulatingList<Criteria> ruleArray) {
this.ruleArray = ruleArray;
}
public CreateObjectForm() {}
}
기준 코드 :
public class Criteria{
String attribute;
String operator;
//... constructor + getters and setters
}
자바 스크립트 / jquery 코드 (JSP 페이지와 동일한 페이지에 있음) :
<script type="text/javascript">
$(document).ready(function(){
//startup functionality
var i = 0;
document.getElementById("addCriteria").onclick = function() {
$("#msgid").html("${ruleArray[i].attribute}");
${ruleArray[i].attribute} = $('#attributeValue').val();
${ruleArray[i].operator} = $('#operatorValue').val();
i++;
}
}
해결법
-
==============================
1.양식의 기존 항목에 대해 jstl을 다음과 같이 사용하십시오.
양식의 기존 항목에 대해 jstl을 다음과 같이 사용하십시오.
<c:forEach items="${form.items}" var="item" varStatus="status" > <span class="count" > <form:input path="items[${status.index}].field" />
이 같은 양식을 렌더링합니다.
<form id = "idform" > <span class="count" > <input name="items[0].field" id="items0.field" /> </span> </form>
그럼 당신은 단순히 자바 스크립트와 함께 새로운 형태로 "라인"해당 인덱스
예를 들면
var is = $('.count').size() $('#idform span:last').after('<span class="count" ><input name="items[' + is + '].field"' + is + '.field" /></span>')
나는 스프링 3 +를 사용한다면 AutopopulatingList를 사용할 필요가 없다고 생각한다. 어떤 컬렉션이라도 충분할 것이다.
-
==============================
2.믹싱 JSP EL 및 Javascript가 부적절합니다. JSP 표현식에서 var i를 사용할 수 없습니다. $ {ruleArray [i] .operator}. JSTL을 사용하여 목록을 반복하고 스크립트 내에서 속성을 만드는 것이 좋습니다.
믹싱 JSP EL 및 Javascript가 부적절합니다. JSP 표현식에서 var i를 사용할 수 없습니다. $ {ruleArray [i] .operator}. JSTL을 사용하여 목록을 반복하고 스크립트 내에서 속성을 만드는 것이 좋습니다.
이 시점에서 당신의 스크립트는 식 내에서 문자열 리터럴 0을 사용하도록 설정 될 수 있습니다. 나는 이보다 더 강력한 기능이 필요하다고 가정하고 있습니다. 더 잘 설명 할 수 있습니까?
$(document).ready(function(){ document.getElementById("addCriteria").onclick = function() { $("#msgid").html("${ruleArray[0].attribute}"); //I assume you wanted to set the element to the value pulled from JSP EL $('#attributeValue').val(${ruleArray[0].attribute}); $('#operatorValue').val(${ruleArray[0].operator}); } }
JSTL을 사용하면 다음과 같은 솔루션을 얻을 수있다.
<script> var criteria = []; <c:forEach var="criteria" items=${ruleArray}> criteria.push({attr:${criteria.attribute}, oper: ${criteria.operator}); </c:forEach> for(var i = 0; i < criteria.length; i++){ alert(criteria[i].attribute); } </script>
이 솔루션은 기본적으로 JSTL을 사용하여 자바 스크립트를 작성합니다. JSON을 반환하고 페이지로드시 Ajax 호출 만하도록 컨트롤러를 수정하는 것이 더 좋은 해결책 일 수 있습니다.
-
==============================
3.다음 줄에서 jsp 코드에서 i를 참조하고 있지만 정의되지 않았습니다.
다음 줄에서 jsp 코드에서 i를 참조하고 있지만 정의되지 않았습니다.
$("#msgid").html("${ruleArray[i].attribute}");
i를 정의하는 자바 스크립트 코드는 클라이언트 (즉, 브라우저)에서 실행됩니다. jsp 코드는 렌더링 된 html이 클라이언트로 전송되기 전에 서버에서 실행됩니다.
from https://stackoverflow.com/questions/13358950/getting-a-spring-model-attribute-list-element-using-an-index-from-javascript by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Entity 객체를 JSON으로 변환 (0) | 2019.05.21 |
---|---|
[SPRING] 쿼츠를 사용한 데이터 검색 (0) | 2019.05.21 |
[SPRING] 어떻게 주석 @ 자바 스프링에서 작동합니까? [복제] (0) | 2019.05.21 |
[SPRING] 스프링 보안 로그 아웃 세션이 무효화되지 않았습니다. (0) | 2019.05.21 |
[SPRING] Spring bean 파일에서 maven profile id 값을 사용하려면 어떻게해야합니까? (0) | 2019.05.21 |