2014-02-06 37 views
0

我陷在大的問題我不想理會對象的某些屬性,但不知道如何跳過來自同一請求對象的多個屬性設置多個請求參數可選

這裏是我的代碼

TestRequestInfo。 java的

public class TestRequestInfo extends BaseFilter { 

    private String id; 

    public String getId() { 
     return id; 
    } 
    public void setId(String id) { 
     this.id = id; 
    } 


} 

BaseFilter.java

public class BaseFilter { 

    private PagingInfo paging; 

    public PagingInfo getPaging() { 
     return paging; 
    } 
    public void setPaging(PagingInfo paging) { 
     this.paging = paging; 
    } 


} 

PagingInfo.java

@XmlRootElement(name = "paging") 
    public class PagingInfo { 
     private Integer totalNumOfRows; 
     private Integer minRowNumber; 
     private Integer maxRowNumber; 

     public PagingInfo() { 
      super(); 
     } 

     public PagingInfo(Integer totalNumOfRows, Integer maxRowNumber, Integer minRowNumber) { 
      super(); 
      this.totalNumOfRows = totalNumOfRows; 
      this.maxRowNumber = maxRowNumber; 
      this.minRowNumber = minRowNumber; 
     } 

     public PagingInfo(Integer maxRowNumber, Integer minRowNumber) { 
      super(); 
      this.maxRowNumber = maxRowNumber; 
      this.minRowNumber = minRowNumber; 
     } 
     public Integer getTotalNumOfRows() { 
      return totalNumOfRows; 
     } 
     public void setTotalNumOfRows(Integer totalNumOfRows) { 
      this.totalNumOfRows = totalNumOfRows; 
     } 

     public Integer getMinRowNumber() { 
      return minRowNumber; 
     } 

     public void setMinRowNumber(Integer minRowNumber) { 
      this.minRowNumber = minRowNumber; 
     } 

     public Integer getMaxRowNumber() { 
      return maxRowNumber; 
     } 

     public void setMaxRowNumber(Integer maxRowNumber) { 
      this.maxRowNumber = maxRowNumber; 
     } 
    } 

控制器

@RequestMapping(value = { "/testList"} , method=RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) 
     public @ResponseBody String testList(HttpServletRequest request, TestRequestInfo testRequestInfo) 
     { 
     .... 
     .... 
     } 

要求我在空白的屬性要求而作出

http://example/abc/testList?id=&paging.maxRowNumber=&paging.minRowNumber= 

它使人們錯誤的請求,並給出ERROR 400,如果我填充這些參數,它會給出適當的響應。

@RequestParam(value = "i", required=false)僅適用於單個實體如何使minRowNumbermaxRowNumber爲可選項?

在此先感謝

回答

1

這是我的代碼和我的測試。

> http://localhost:8080/FileUpload/testList.htm?id=1&paging.maxRowNumber=1&paging.minRowNumber=1 
> TestRequestInfo [id=1, getPaging()=PagingInfo [totalNumOfRows=null, 
> minRowNumber=1, maxRowNumber=1]] 
> 
> http://localhost:8080/FileUpload/testList.htm?id=1&paging.maxRowNumber=1&paging.minRowNumber= 
> TestRequestInfo [id=1, getPaging()=PagingInfo [totalNumOfRows=null, 
> minRowNumber=null, maxRowNumber=1]] 
> 
> http://localhost:8080/FileUpload/testList.htm?id=1&paging.maxRowNumber=&paging.minRowNumber= 
> TestRequestInfo [id=1, getPaging()=PagingInfo [totalNumOfRows=null, 
> minRowNumber=null, maxRowNumber=null]] 



@RequestMapping(value = { "/testList"} , method=RequestMethod.GET) 
public @ResponseBody String testList(HttpServletRequest request, TestRequestInfo testRequestInfo) 
{ 

    System.out.println(testRequestInfo); 
    return "ss"; 
} 

我的Spring配置

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

正如你所看到的代碼是完全的功能,看來問題可能是您正在使用的URL模式。

檢查是否正在使用

<mvc:annotation-driven/> 
+0

對不起我的壞,你是正確的代碼是功能性的,我是從導致錯誤的請求的另一個功能,其內部接收例外:) – muneebShabbir