I가 다음 Grails의 (2.3.6) POGO :Grails에 주입 : jQuery를 선택하고 핸들러
class Pet {
Long id
String name
PetType type
}
다음 컨트롤러 :
class PetController {
def index() {
List<Pet> pets = PetLoader.loadAllPets()
render(
view: "listPets",
model: [
pets: pets
]
)
}
def loadPet() {
Long petId = params.petId // Pet#id
// Do stuff with the 'petId'.
}
)
그리고 각각의 본문 listPets.gsp
: 나는이 코드를 실행하면
<body>
<h1>Select a pet to edit below:</h1>
<g:select id="pets"
name="pets"
from="${pets}"
value="${pet.name}"
optionKey="id" />
<g:javascript>
var ajaxAction = "${createLink(controller:'pet',action:'loadPet')}"
$("#pets").on('change', function() {
$.get(
url: ajaxAction,
data: $("#pets").val(),
success: function(data, status) {
alert("Success!\n" + data);
},
dataType: "json"
);
});
</g:javascript>
</body>
, 나는 N 분명히 빈 <g:select>
를 얻을 수 ot는 올바르게 주입/설정되었습니다. 내가하고 싶은 것은 이것이다 : 페이지가로드, 전체 users
목록은 <select id="pets">
드롭 다운에 주입하고 옵션 텍스트로 Pet#name
문자열이 표시됩니다
- ;
- 사용자가 드롭 다운 (UI에서)에서
Pet
을 새로 선택하면 jQuery 핸들러는loadPet
으로 비동기 호출을 발생시킵니다. 내가 백엔드에 그 애완 동물 ID로 다른 물건을 할 수 있도록 다음 - 내부
loadPet
는, 나는params
객체를 통해, 드롭 다운 메뉴에서 선택한 값의Pet#id
에 acccess 필요 난
나무를 통해 숲을 보면서 힘든 시간을 보냈습니다. 확실히 <g:select>
태그를 잘못 사용했다고 확신합니다. 그러나 컨트롤러 및/또는 jQuery 스크립트를 변경해야 할 수도 있습니다. 질문 : Pet#name
으로 선택 항목을 채우려면 내 코드에 어떤 변경이 필요합니까? loadPets
이 jQuery에서 호출 될 때 params
에서 Pet#id
에 액세스 할 수 있습니까?