不需要额外加注解,或者是去搞html页面的头。
这个问题主要是命名不规范造成的。在跳转的时候不能springboot不能弄清怎么跳转导致的。我的做法就是将url名称与我的页面名称区分开来。由此,问题解决了。
package tacos.web;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import tacos.Ingredient;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.stream.Collectors;
import tacos.Taco;
import tacos.Ingredient;
import tacos.Ingredient.Type;
import javax.validation.Valid;
/**
* ASUS
* 2022/8/9
* 21:57
*/
@Slf4j
@Controller
@RequestMapping("/design")
public class DesignTacoController {
@GetMapping
public String showDesignForm(Model model){
List<Ingredient> ingredients = Arrays.asList(
new Ingredient("FLTO", "Flour Tortilla", Type.WRAP),
new Ingredient("COTO", "Corn Tortilla", Type.WRAP),
new Ingredient("GRBF", "Ground Beef", Type.PROTEIN),
new Ingredient("CARN", "Carnitas", Type.PROTEIN),
new Ingredient("TMTO", "Diced Tomatoes", Type.VEGGIES),
new Ingredient("LETC", "Lettuce", Type.VEGGIES),
new Ingredient("CHED", "Cheddar", Type.CHEESE),
new Ingredient("JACK", "Monterrey Jack", Type.CHEESE),
new Ingredient("SLSA", "Salsa", Type.SAUCE),
new Ingredient("SRCR", "Sour Cream", Type.SAUCE)
);
Type[] types=Ingredient.Type.values();
for (Type type:types){
model.addAttribute(type.toString().toLowerCase(),filterByType(ingredients,type));
}
model.addAttribute("taco",new Taco());
return "tacoDesign";
}
@PostMapping
public String processDesign(@Valid Taco taco, Errors errors){
if(errors.hasErrors()){
return "tacoDesign";
}
log.info("Processing design: "+taco);
return "redirect:/orders/current";
}
private List<Ingredient> filterByType(List<Ingredient> ingredients,Type type ){
return ingredients
.stream()
.filter(x->x.getType().equals(type))
.collect(Collectors.toList());
}
}