我知道如何确保url中是否存在特定参数.我想确保url中没有任何参数,而不仅仅是指定的参数.我怎么能做到这一点?我有一长串参数,并且为所有参数列出条件似乎效率低下.
示例网址是: www.domain.com/Product/UniqueId
由于每个产品都有许多独特的参数,用户可以通过产品页面,独特的代码,独特的供应商,独特的信号,独特的产品等来获得产品页面.
例如:
www.domain.com/Product/UniqueId?code=uniqueCode
www.domain.com/Product/UniqueId?sig=uniqueSig
www.domain.com/Product/UniqueId?pod=uniquepod
www.domain.com/Product/UniqueId?circle=circleNumber&location=Location&color=Color
Run Code Online (Sandbox Code Playgroud)
我需要在JSP而不是Java中进行此类测试.
使用URI类可以更容易一些:
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
public class UrlTest2
{
public static void main( String[] args )
throws MalformedURLException, URISyntaxException
{
URI url = new URI( "www.domain.com/Product/UniqueId" );
System.out.println( url.getQuery() ); // prints "null"
URI url2 = new URI( "www.domain.com/Product/UniqueId?pod=uniquepod" );
System.out.println( url2.getQuery() ); // prints "pod=uniquepod"
}
}
Run Code Online (Sandbox Code Playgroud)
所以如果getQuery()返回null没有参数.否则,有.
关于你的编辑: 嗯,我不建议把代码放在JSP中.现在考虑不好的做法.
但如果你必须,看起来你可以要求所有参数,如果结果是0,则没有任何参数.
<%
Map params = request.getParameterMap();
boolean noParams = (params.getSize() == 0);
%>
Run Code Online (Sandbox Code Playgroud)
JSP代码未经测试,但应该给你一个想法.然后,您可以noParams在JSP代码中使用boolean .
跟进
由于必须在 JSP 中完成这一新要求,即使下面原始答案中列出的 Spring 处理程序代码可以添加包含相关信息的 Model 属性,以下是如何做到这一点。
类似的两种方式如下:
<!-- Use the parameter Map -->
<c:if test="${empty param}">
<!-- no query parameters given -->
</c:if>
Run Code Online (Sandbox Code Playgroud)
<!-- Use the request object -->
<c:if test="${pageContext.request.queryString == null}">
<!-- no query parameters given -->
</c:if>
Run Code Online (Sandbox Code Playgroud)
原答案
您标记了spring-mvc,所以这意味着您有类似的内容(如果您发布了它那就太好了):
@Controller
public class ProductController {
@RequestMapping("/Product/UniqueId")
public String uniqueId(Model model,
@RequestParam(path="code" , required=false) String code,
@RequestParam(path="sig" , required=false) String sig,
@RequestParam(path="pod" , required=false) String pod,
@RequestParam(path="circle" , required=false) String circle,
@RequestParam(path="location", required=false) String location,
@RequestParam(path="color" , required=false) String color) {
// code here
}
}
Run Code Online (Sandbox Code Playgroud)
以下是检查“无查询参数”的两种方法:
// Get all parameters in a Map
public String uniqueId(Model model,
...,
@RequestParam Map<String, String> allParams) {
if (allParams.isEmpty()) {
// no query parameters given
}
// code here
}
Run Code Online (Sandbox Code Playgroud)
// Use the request object
public String uniqueId(Model model,
...,
HttpServletRequest request) {
if (request.getQueryString() == null) {
// no query parameters given
}
// code here
}
Run Code Online (Sandbox Code Playgroud)
您可能想检查此链接以了解 Spring 可以为您提供的所有各种类型的参数:
http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html# mvc-ann-参数
| 归档时间: |
|
| 查看次数: |
1653 次 |
| 最近记录: |