Seperti yang kita semua ketahui, kelas tindakan Strut2 dapat memperoleh semua nilai yang relevan melalui atribut, seperti parameter permintaan, parameter konfigurasi tindakan, memberikan nilai atribut ke tindakan lain (melalui hasil rantai), dll. Untuk mendapatkan nilai parameter ini, satu -satunya hal yang harus kita lakukan adalah mendeklarasikan properti dengan nama yang sama dengan parameter di kelas tindakan. Sebelum Struts2 memanggil metode tindakan kelas tindakan (default adalah metode eksekusi), properti tindakan yang sesuai akan ditetapkan.
Untuk menyelesaikan fungsi ini, Struts2 tergantung pada objek ValueStack sebagian besar. Objek ini berjalan melalui seluruh siklus aksi hidup (setiap contoh objek dari kelas tindakan akan memiliki objek ValueStack). Ketika Struts2 menerima permintaan. Tindakan, pertama-tama akan membuat instance dari objek kelas tindakan, tetapi tidak akan memanggil metode tindakan, tetapi pertama-tama akan menempatkan properti yang sesuai dari kelas tindakan pada simpul tingkat atas dari objek ValueStack (objek ValueStack setara dengan tumpukan). Hanya saja semua nilai atribut adalah nilai default, seperti nilai atribut tipe string adalah nol, nilai atribut dari tipe int adalah 0, dll.
Setelah memproses pekerjaan di atas, Struts2 akan menghubungi Interceptor dalam rantai pencegat. Setelah memanggil semua pencegat, metode tindakan kelas tindakan akan dipanggil. Sebelum memanggil metode tindakan, nilai atribut di simpul tingkat atas dari objek ValueStack akan ditetapkan ke atribut yang sesuai di kelas tindakan. Setiap orang harus memperhatikan, ini memberi kita banyak fleksibilitas. Dengan kata lain, selama proses struts2 memanggil pencegat, nilai atribut dalam objek ValueStack dapat diubah. Ketika nilai atribut tertentu diubah, nilai atribut yang sesuai dari kelas tindakan akan menjadi nilai dari perubahan terakhir atribut di interceptor.
Dari deskripsi di atas, mudah untuk mengetahui bahwa di kelas aksi Struts2, Anda dapat memperoleh nilai parameter dengan nama yang sama dengan atribut, yang ditangani oleh pencegat yang berbeda. Misalnya, pencegat yang memperoleh parameter permintaan adalah params, dan pencegat yang memperoleh parameter konfigurasi dari tindakan adalah staticparams, dll. Baca nilai-nilai yang sesuai di dalam pencegat ini dan perbarui nilai-nilai properti yang sesuai dari simpul tingkat atas dari objek ValueStack. Objek ValueStack seperti sabuk konveyor, melewati nilai atribut dari satu pencegat ke pencegat lain (tentu saja, selama waktu ini, nilai atribut dapat berubah), dan akhirnya meneruskannya ke objek tindakan, dan nilai akhir dari atribut dalam objek ValueStack ditugaskan ke atribut yang sesuai dari kelas tindakan.
Ketika kami menggunakan Ex Expressions di lapisan tampilan, kami tidak hanya dapat mengakses properti di 11 objek tersembunyi dalam ekspresi EL, tetapi juga mengakses nilai properti objek dalam ValueStack, karena Struts2 lebih lanjut merangkum httpservletRequest.
Kelas Publik StrutsRequestWrapper memperluas httpservletrequestwrapper {public strutsRequestWrapper (httpservletrequest req) {super (req);} objek publik getattribute (string s) {...... ActionContext ctx = actionContext.getContext (); objek Atribute = ActionContext ctx = actionContext.getContext (); Objek Atribute = ActionContext ctx = ActionContext.getContext (); Objek Atribute = ActionContext CTX = ActionContext.getContext (); Objek Atrime = (ctx != null) {if (attribute == null) {//If the attribute value is not found from the request range, that is, the attribute value of the object is found from ValueStack... ValueStack stack = ctx.getValueStack();//Get the valueStack object attribute = stack.findValue(s);//Follow the specified attribute value from the object in ValueStack ...}} Return Atribut;}}Meringkaskan
Di atas adalah semua tentang artikel ini tentang bagaimana Strut2 merangkum parameter permintaan, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!