【发布时间】:2011-05-03 10:51:04
【问题描述】:
我的问题是我有以下网址:
http://localhost:8080/shiSolrClient/app/shi/search?q=xyz&fq=author:"Max, Muster"
我有一个映射这些 requestParameters 的 bean:
public class SearchParams {
private String q = "";
private String[] fq;
// getters goes here...
}
我的问题是 Spring 自动将 fq 参数拆分为逗号。所以在我的bean中,fq中有两个字符串:
String[0]: author:"Max
String[1]: Muster"
我不想要这种行为。我想要告诉 Spring 在 '&'-tokens 上拆分,而不是在 ','-tokens 上。例如。
http://localhost:8080/shiSolrClient/app/shi/search?q=xyz&fq=author:"Max, Muster"&content:"someContent"
fq=
String[0]: author:"Max, Muster"
String[1]: content:"someContent"
谁能告诉我如何在 Spring MVC 3 中归档它
我的控制器如下:
@RequestMapping(value = "search", method = RequestMethod.GET)
public String search(SearchParams searchParams, BindingResult bindResult, Model
model) {
SolrQuery solrQ = getBasicQuery(searchParams).setQuery(searchParams.getQ());
for(String fq : searchParams.getFq()) {
solrQ.setParam("fq", fq);
}
try {
QueryResponse rsp = getSolrServer().query(solrQ);
model.addAttribute("solrResults", transformResults(rsp.getResults(),
rsp.getHighlighting(), searchParams, rsp));
model.addAttribute("facetFields", transformFacets(rsp.getFacetFields(),
rsp.getFacetDates(), searchParams));
model.addAttribute("pagination", calcPagination(searchParams,
rsp.getResults()));
...
}
我的 Spring-Config 看起来像这样:
<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />
<!-- Handles HTTP GET requests for /resources/** -->
<resources mapping="/resources/**" location="/resources/" />
<!-- Configure Apache Tiles for the view -->
<beans:bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name="definitions">
<beans:list>
<beans:value>/WEB-INF/views/layout/layouts.xml</beans:value>
<beans:value>/WEB-INF/views/hitlist/views.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
<beans:bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="requestContextAttribute" value="requestContext"/>
<beans:property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</beans:bean>
<beans:bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<beans:property name="basenames">
<beans:list>
<beans:value>global</beans:value>
<beans:value>hitlist</beans:value>
<beans:value>local/messages</beans:value>
</beans:list>
</beans:property>
</beans:bean>
<!-- Scans within the base package of the application for @Components to configure
as beans -->
<context:component-scan base-package="com.shi.solrclient.web" />
【问题讨论】:
-
你能告诉我们你的控制器代码吗?
标签: spring-mvc parameters split request