我正在使用Spring Boot搜索工具,在將值從前端傳遞到后端時遇到問題。所以,我有一個select用于此搜索工具的欄位,它用于搜索。它有 3 個值(PRIVATE、PUBLIC 和 ALL)。PRIVATE 選項的值為 PRIVATE,PUBLIC 選項的值為 PUBLIC,ALL 的值為空字串''。當我嘗試使用空字串傳入搜索 api 時,后端沒有得到空字串,但由于某種原因他將其攔截為 null。這是我的前端代碼HTML/Vue.js
<div class="col-sm-4 col-12">
<label for="statut" class="form-label">Statut</label>
<select name="statut" class="form-select" id="statut" v-model="selectedVisibility">
<option value="PRIVATE">PRIVATE</option>
<option value="PUBLIC">PUBLIC</option>
<option value="">ALL</option>
</select>
</div>
這是我的JS:
async searchBy(){
{
fetch(`http://localhost:100/api/v1/questions/search?statut=${this.selectedVisibility}`,
{headers : authHeader()})
.then(response => response.json())
.then(data =>
{ console.log(data);
this.questions = data })
}
},
當我傳遞空 String 的 ALL 值時'',Spring Boot 將其默認為null而不是保留該值。我可能可以在里面添加一個條件,( if value is null ) value = '';但這會花費太多時間,因為我有很多搜索工具,那么,有沒有另一種方法可以讓它取空字串的值而不是null?這是后端代碼:
@GetMapping("/questions/search")
@CrossOrigin(origins = "http://localhost:8081")
public ResponseEntity<List<Question>> getQuestionByAtLeastOne
(
@RequestParam(value="statut",required=false) EStatus statut)
throws ResourceNotFoundException
{
List<Question> question= questionRepository.findByAtLeastOne(statut);
return ResponseEntity.ok().body(question);
}
這findByAtLeastOne只是一種進行搜索的方法,但在到達該部分之前,該值已經被轉換為null
uj5u.com熱心網友回復:
您可以defaultValue像使用.@RequestParam(value = "status", required = false, defaultValue = "")statutString
但是從您的代碼來看,它看起來像是一個enum( EStatus) 并且 with enumsdefaultValue必須包含一個可以傳遞給Enum.valueOf(). 如果是這種情況,即使您指定defaultValue = ""該值仍然是null. (顯然,如果你有一個enum像 "ALL" 和 used 的默認值,它會起作用defaultValue = "ALL")。
否則,您將不得不null在控制器或存盤庫方法中手動處理該值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471009.html
標籤:javascript html 弹簧靴 Vue.js
