มุมมองการแมป URI ที่แตกต่างกันสองรายการ มุมมองหนึ่งทำงานได้ดี แต่ไม่สามารถโหลด CSS สำหรับอีกมุมมองหนึ่งได้

มีสองวิธีที่มี URI ต่างกันซึ่งแมปกับมุมมองเดียวกันใน Spring Boot วิธีแรกทำงานได้ดี แต่วิธีที่สองแสดงได้เฉพาะ html และ CSS ไม่สามารถโหลดได้ โค้ดมีดังต่อไปนี้:

@Controller
public class ExamController {
    @RequestMapping("/quiz0")
    public ModelAndView quizingA() {
        System.out.println("run into quiz0");
        ModelAndView modelAndView = new ModelAndView("examination");
        return modelAndView;
    }

    @RequestMapping("/quiz1/{course}")
    public ModelAndView quizingB(@PathVariable("course") String course) {
        System.out.println("run into quiz1, couse choosed: " + course);
        ModelAndView modelAndView = new ModelAndView("examination");
        return modelAndView;
    }
}

จากบันทึกเข้าถึงได้สำเร็จทั้งคู่ อย่างที่ทราบ ไม่น่าจะมีข้อผิดพลาดใช่ไหม?

สำหรับอันแรกที่ใช้งานได้ดี url ที่ฉันใช้คือ;

http://localhost:8080/quiz0

สำหรับอันที่สองที่ล้มเหลว url ที่ฉันใช้คือ:

http://localhost:8080/quiz1/Java

ข้อมูลเพิ่มเติม ฉันได้ปิดการใช้งานการรักษาความปลอดภัยของสปริงด้วยการแทนที่ WebSecurityConfigurerAdapter ฉันสามารถวางมันออกมาได้ถ้าจำเป็น

ใครก็ได้ช่วยอธิบายหน่อยได้ไหม?

ขอบคุณล่วงหน้า.


person Junjie    schedule 28.08.2014    source แหล่งที่มา
comment
คุณจะต้องเปิดคอนโซลเครือข่ายของเบราว์เซอร์และตรวจสอบว่าคำขอ HTTP สำหรับ CSS มีการตอบสนองอย่างไร   -  person Sotirios Delimanolis    schedule 28.08.2014
comment
สิ่งที่กรอง (และไม่อนุญาต) CSS กำหนดค่าตัวกรองนั้น Servlet เพื่ออนุญาต   -  person jmj    schedule 28.08.2014
comment
@JigarJoshi ฉันกำหนดค่าด้วย http.authorizeRequests().antMatchers("/css/**", "/js/**", "/images/**").permitAll(); แต่มันใช้งานไม่ได้   -  person Junjie    schedule 28.08.2014
comment
@SotiriosDelimanolis ตกลง ฉันจะลองดู   -  person Junjie    schedule 28.08.2014
comment
มันอาจจะไม่ได้กรองมัน คุณสามารถดีบักคำขอ http ตลอดทางจากเบราว์เซอร์ไปยังเซิร์ฟเวอร์และแต่ละจุดบนเซิร์ฟเวอร์ได้ไหม   -  person jmj    schedule 28.08.2014
comment
@SotiriosDelimanolis ไฟล์ css และ js ทั้งหมดได้รับข้อผิดพลาดเช่น GET http://localhost:8080/quiz1/css/global/icheck/demo/js/jquery.js 404 (Not Found) แต่สำหรับคอนโทรลเลอร์ตัวแรก (quizingA()) ไม่มีข้อผิดพลาดเกิดขึ้น   -  person Junjie    schedule 28.08.2014
comment
@JigarJoshi ไฟล์ css และ js ทั้งหมดได้รับข้อผิดพลาดเช่น GET http://localhost:8080/quiz1/css/global/icheck/demo/js/jquery.js 404 (Not Found) แต่สำหรับคอนโทรลเลอร์ตัวแรก (quizingA()) ไม่มีข้อผิดพลาดเกิดขึ้น   -  person Junjie    schedule 28.08.2014
comment
คุณสามารถดีบักคำขอ http ตลอดทางจากเบราว์เซอร์ไปยังเซิร์ฟเวอร์และแต่ละจุดบนเซิร์ฟเวอร์ได้หรือไม่   -  person jmj    schedule 28.08.2014
comment
โดยทั่วไป CSS ของคุณจะอยู่ใน 1 ตำแหน่ง ไม่ใช่ 2... ฉันสงสัยว่า URL ของคุณแตกต่างออกไป และคุณใช้ URI ที่ไม่ถูกต้องเพื่อดึงข้อมูล CSS ฉันสงสัยว่าคุณใช้ญาติแทนที่จะเป็น URI ที่สมบูรณ์   -  person M. Deinum    schedule 28.08.2014
comment
@ M.Deinum ขอบคุณสำหรับความคิดเห็น URI ที่ฉันใช้คือเส้นทางสัมพัทธ์ซึ่งตามหลัง [docs.spring.io/spring-boot/docs/1.0.1.RELEASE/reference/   -  person Junjie    schedule 28.08.2014
comment
@ M.Deinum ดูเหมือนว่าฉันจะเข้าใจความหมายของคุณผิด เมื่อฉันเปลี่ยนเป็น URI ที่สมบูรณ์ มันก็ใช้งานได้ ขอบคุณ   -  person Junjie    schedule 28.08.2014


คำตอบ (1)


คุณอาจรวม CSS ของคุณเข้ากับเส้นทางสัมพัทธ์แทนที่จะเป็นเส้นทางที่แน่นอน

เช่น
หากคุณรวมสิ่งนี้

<link type="text/css" href="/thcss/bootstrap.css" rel="stylesheet"/>

เส้นทางจะถูกแปลงเป็น

/quiz0/css/bootstrap.css

และ

/quiz1/{course}/bootstrap.css

ฉันแนะนำให้ใช้กับเส้นทางที่แน่นอน

<link type="text/css" href="/th/css/bootstrap.css" rel="stylesheet"/>
person Sezin Karli    schedule 28.08.2014
comment
เยี่ยมมาก มันใช้งานได้หลังจากที่ฉันเปลี่ยนมุมมองตามที่คุณพูด ขอบคุณที่ช่วยประหยัดความพยายามของฉัน - person Junjie; 28.08.2014