亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

@Pathvariable注解允許參數為空嗎?

@Pathvariable注解允許參數為空嗎?

正在回答

3 回答

@PathVariable不能為空,不能設置默認值,因為null對于url是無意義的。
如果參數確實可能為空,需要默認值,可以使用@RequestParams。

0 回復 有任何疑惑可以回復我~
#1

慕慕1234 提問者

非常謝謝你的回答,其實我知道null對于url是無意義的。其實疑問在于它的 required 屬性設成false是什么作用呢 ?我想應該不是雞肋,是真想不通了,或者我鉆牛角尖了,真心求大神解答
2018-07-26 回復 有任何疑惑可以回復我~
#2

慕慕1234 提問者

非常感謝!
2018-07-26 回復 有任何疑惑可以回復我~

非常感謝,我也遇到相同問題了

1 回復 有任何疑惑可以回復我~

不能允許為空,但是可以變通。最近遇到個required=false沒用的情況。如下:

@RequestMapping(value?=?"/student/{id}",?RequestMethod.GET)
public?Student?student(@PathVariable(required?=?false)?Integer?id)?{
????//......
????return?student;
}

按照上面的代碼,是希望如果不傳id,Integer id的id就為null,可以查詢所有學生信息。但是發現,/student這個請求是過不來的,而且會報錯。

試了n次,突然發現,其實/student和/student/{id}是兩個不同的url,當然是不能走同一個請求的呀。于是想到@RequestMapping是可以處理多個url的。于是將上面的@RequestMapping改成下面這樣:

@RequestMapping(value?=?{"/student/{id}",?"/student"},?RequestMethod.GET)

這樣就是可以的,此時的required = false就可以起作用了。

我覺得springmvc處理這塊的邏輯就是:如果required = false,而你沒有傳這個參數,那么它會去找這個參數去掉之后的替代url (/student),如果發現有替代的url,就可以處理這個請求,如果沒有找到,就拋出異常不去處理。

所以其實上面的方法也可以拆成兩個方法。

@RequestMapping(value?=?"/student/{id}",?RequestMethod.GET)
public?Student?student(@PathVariable?int?id)?{
}
@RequestMapping(value?=?"/student",?RequestMethod.GET)
public?Student?studentAll()?{
}


7 回復 有任何疑惑可以回復我~
#1

慕慕1234 提問者

非常感謝,推論是跟我預想的一樣
2018-08-28 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

@Pathvariable注解允許參數為空嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號