SpringMVC, jquery, Fliesen und teilweise rerendering
Ich versuche zu tun, ein partielles rendering von meiner web-site, mit spring mvc 3.1, Fliesen, 2 und jquery.
Hier ist mein Frühling conf :
<beans:bean class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.js.ajax.tiles2.AjaxTilesView"/>
</beans:bean>
Meine Fliesen conf :
<definition name="productSearch" extends="baseLayout">
<put-attribute name="mainSection">
<definition template="/WEB-INF/views/productSearch.jsp">
<put-attribute name="productSearchResults" value="/WEB-INF/views/productSearchResults.jsp" />
</definition>
</put-attribute>
</definition>
Wie Sie sehen, es gibt eine geschachtelte Attribut mit dem Namen "productSearchResults". Dies ist die Seite Ergebnisse, und ich möchte diese Seite neu gerendert via ajax.
Mein controller :
@RequestMapping(params = "search=true", value = "/", method = RequestMethod.POST)
public String searchHandler(@Valid final SearchFormBean searchformBean, final Model model) {
model.addAttribute("productsList", productsService.findProducts(searchformBean.getSearchCriteria()));
return "productsSearch";
}
Meine jsps :
productsSearch.jsp :
<form:form id="product-search-form" method="post" modelAttribute="productSearchFormBean">
<input type="hidden" name="search" value="" />
<form:input path="searchCriteria.name" />
//AND SOME OTHER FIELDS...
<button type="submit" onclick="this.form.search.value='true';">Search</button>
</form>
productSearchResults.jsp :
<div id="products-result">
<div id="search-results-info" class="section-content">
Order results :
<form:select path="searchCriteria.resultsSort">
<form:option value="orderByName">Name</form:option>
<form:option value="orderByDame">Date</form:option>
</form:select>
</div>
<div id="products-content" class="section-content">
<c:forEach var="product" items="${productsList}">
<article>
//PRODUCT INFORMATIONS DISPLAYED HERE...
</article>
</c:forEach>
</div>
</div>
schließlich ein .js-Datei enthalten, in der productSearch.jsp :
$('select[id="searchCriteria.resultsSort"]').change(function() {
$.ajax({
type : "POST",
url : "/myapp/product/search/",
data : "search=true&fragments=productSearchResults",
success : function(response) {
$("#search-results").html(response);
},
error : function(e) {
alert('Error : ' + e);
}
});
});
Also hier ist das Ding : jedes mal, wenn ich die "searchCriteria.resultsSort" selector-Wert in der productsSearchResults.jsp-Seite möchte ich die Ergebnisse Kachel nachgeladen werden (ohne Neuladen der gesamten Seite).
Mit dem code oben, ich Schaffe es, re-Rendern, die gesamte Seite (einschließlich der html-Tags...) aber nicht nur den Anteil, der Interesse an mir.
Jeder Hinweis, wie das zu erreichen ist mein Ziel ? Ist es wirklich möglich oder habe ich falsch verstanden, die partielle rendering-Prinzip ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich gefunden, was falsch war, so bin ich der Beantwortung meiner eigenen Frage...
Ich habe gerade den javascript-code in diese :
Und jetzt funktioniert es !
Durch die partielle, re-Rendern, es scheint, dass die "searchCriteria.resultsSort" selector ist nicht mehr abgebildet, um die form, sobald die Seite geladen wird, auf dem Bildschirm, so hatte ich auch diese Zeile in mein controller :
Das ist alles ! Hoffe, es hilft anderen Menschen.