Menggunakan awalan sebagai parameter dalam fa forward

Apakah ada cara saya dapat menggunakan awalan sebagai parameter atau di jalur maju seperti:

<forward name="test" path="/switch.do&page='/test.do'&prefix='/test'"/>

person Community    schedule 06.02.2009    source sumber
comment
Mengapa Anda tidak menggunakan atribut permintaan atau sesi   -  person Fred    schedule 13.02.2009


Jawaban (1)


Saya tidak yakin apa yang dimaksud dengan prefix, saya berasumsi Anda mengacu pada nama servlet. Misalkan Anda memiliki maju ini di struts-config.xml Anda sebagai bagian dari pemetaan action:

<forward name="test" path="/switch" />

Jika Anda ingin nama penerus' tersedia untuk tindakan Anda, Anda bisa mendapatkannya dengan mapping.findForwards().

Jika Anda sudah memiliki forward, misalnya:

ActionForward forward = mapping.findForward("test");

Anda bisa mendapatkan nama penyerang dengan:

String fwdName = forward.getName(); // returns "test"

dan nama atau jalur servlet dengan:

String servletPath = forward.getPath(); // returns "/switch.do"

Anda juga bisa mendapatkannya dari objek request:

String servletPath = request.getServletPath();

Oke, sekarang, jika Anda ingin memodifikasi penerusan sebelum mengembalikan kontrol ke Struts, sehingga Anda dapat menambahkan parameter tambahan, Anda harus membuat ActionForward baru berdasarkan salah satu penerus yang ditentukan di struts-config.xml Anda, seperti misalnya:

ActionForward forward = mapping.findForward("test");
StringBuilder path = new StringBuilder(forward.getPath());
path.append("?id=");
path.append(someobject.getId());
return new ActionForward(path.toString(), true); // `true` means "do a redirect"

Ini akan memberitahu Struts untuk mengeluarkan pengalihan ke URL seperti /switch.do?id=3

Mengetahui cara membuat ActionForward baru, dan cara mendapatkan nama forward dan nama servlet yang ditunjuknya, Anda tidak akan mengalami masalah dalam membuat forward yang Anda perlukan.

person Jorge Gajon    schedule 16.12.2009