سؤال

كما التصحيح بلدي التماس التطبيق ، الأثقال أنا لا أفهم حقا كيف المعلمة يمر يعمل.المصطلحات التالية قد الخلط.لذلك أنا أسأل هذا السؤال العام أملا في الحصول على تفسير جيد لما يعمل مع ماذا وماذا بعض الأمور كلها.

أولا وقبل كل شيء من صفحة واحدة إلى أخرى يمكنك استخدام ساعة:commandButton أو s:زر.أنا أفهم أن s:زر لا يقدم النموذج, ولكن هذا لا يساعد علي فهم الفرق.إذا كنت لا تقديم نموذج عن طريق الانتقال من صفحة إلى أخرى ، ثم ماذا تفعل ؟

بلدي التطبيق يتضمن إدخال المعلومات في شكل ضرب زر ومن ثم الذهاب إلى الصفحة الجديدة التي تعرض النتائج بعد تشغيل الاستعلام.يبدو أنني قد رأيت هذا النشاط مع s:زر ، فكيف يتم ذلك إذا كان ليس "تقديم شكل" ؟ أشعر أنا في عداد المفقودين شيء أساسي هنا.

أما بالنسبة المعلمات أنفسهم...من ما شاهدته يمكنك تمرير المعلمات باستخدام واحدة من 3 طرق:

  1. f:المعلمة.يبدو أن هذا يحدث في كثير من الأحيان في السرد مع s:زر من ساعة:commandbutton.لماذا هذا ؟
  2. أيضا, يمكنك أن "تمرير" (أو شيء) المعلمات باستخدام الخاص بك page.xml الملف.المعلمة يبدو أن تظهر في كل من المصدر page.xml و الهدف page.xml لجعلها تظهر في URL.
  3. وأخيرا ، هناك خيار إضافة @RequestParameter الشرح الخاص بك النسخ الفول.أستنتج أن يستخدم أيضا عند تعيين f:المعلمة في طريقة العرض الخاصة بك.يعني واحد في page.xml يحصل تجاهلها ؟ لاحظت في تسجيل سبيل المثال التماس التوزيع المستخدم فول يحصل بالسكان دون أي معايير يتم تمريرها عبر page.xml f:المعلمة.كيف يكون ذلك ممكنا ؟

أنا متأكد من أن هذا السؤال يكشف قدرا كبيرا من الجهل.

نأمل منكم بليغة الناس "على" ما أطلبه و تعطيني تفسيرا من هذه العملية.

شكرا مقدما.

TDR

هل كانت مفيدة؟

المحلول

إذا كنت لا تقديم نموذج عن طريق الانتقال من صفحة إلى أخرى ، ثم ماذا تفعل ؟

الانتقال إلى صفحة أخرى دون تقديم أي شكل من المجالات.

بلدي التطبيق يتضمن إدخال المعلومات في شكل ضرب زر ثم الذهاب الى الصفحة الجديدة التي تعرض النتائج بعد تشغيل الاستعلام.ذلك يبدو رأيت هذا النشاط اتخاذ مع s:زر

s:زر لن يقدم النموذج ، لذا القيم على الصفحة الخاصة بك لن يتم تطبيقها على نموذج.يجب استخدام commandButton/رابط هذه.النشاط قد شهدت يمر بالفعل بالسكان القيمة إلى صفحة أخرى.

f:المعلمة

تستخدم في كثير من الأحيان مع s:button/link وهذه غالبا ما تستخدم في الملاحة.يمكنك استخدام f:المعلمة لتمرير بالفعل بالسكان قيمة عبر إلى صفحة أخرى.h:commandButton/Link يستخدم لتقديم أشكال لذا القيم في حقول النموذج.بالطبع لا يوجد شيء يمنعك من استخدام f:المعلمة هذا.

page.xml

على params المستخدمة هنا هي تطبيق طلب المعلمات إلى نموذج والعكس بالعكس.

@RequestParameter

يمكن استخدامها جنبا إلى جنب مع كل ما سبق ولكن هو العبث قليلا عندما تستخدم مع page.xml params كما يمكن استخدامها للقيام بنفس العمل

على سبيل المثال

إذا كنت تبدأ مع هذه الصفحة:

http://mydomain.com/myapp/home.seam?name=damo

و home.page.xml له:

<param name="name" value="#{person.name}"/>

ثم عند تحميل الصفحة person.setName("damo") وسوف يطلق كما أن هناك مطابقة طلب المعلمة في URL.

يمكنك تخزين قيمة المعلمة في الرابط إلى الصفحة التالية:

<s:link value="Go to Page 2" view="/page2.xhtml">
  <f:param name="name" value="#{person.name}"/>
</s:link>

عند النقر فوق الرابط ثم انتقل إلى http://mydomain.com/myapp/page2.seam و page2.page.xml له:

<param name="name" value="#{someOtherBean.name}"/>

ثم someOtherBean.setName("damo") وسوف يطلق.

Page2 قد يكون s:زر مثل هذا:

<s:button value="Say Hello" action="#{someOtherBean.sayHello}">
  <f:param name="subject" value="#{someOtherBean.name}"/>
</s:button>

و الأسلوب يمكن أن يكون:

@Name("someOtherBean")
public class SomeOtherBean {

  @RequestParameter("subject")  //same value as the 'name' in f:param
  private String subject;

  public void sayHello() {
    System.out.println("Hello "+subject);
  }
}

ويساعد هذا الأمل!

نصائح أخرى

هناك بالفعل كبير في الإجابة عن هذا السؤال.أنا فقط أحاول أن أضيف بعض المعلومات الاضافية.

إذا كنت لا تقديم نموذج عن طريق الانتقال من صفحة إلى أخرى ، ثم ماذا تفعل ؟

  1. بالفعل expalined في @دامو الجواب
  2. لا التحقق من جانب العميل أو تشغيل جافا سكريبت قبل الانتقال إلى الصفحة التالية باستخدام onclick سمة من زر.
  3. استدعاء أسلوب في الفول باستخدام action السمة.

بلدي التطبيق يتضمن إدخال المعلومات في شكل ضرب زر ومن ثم الذهاب إلى الصفحة الجديدة التي تعرض النتائج بعد تشغيل الاستعلام.يبدو أنني قد رأيت هذا النشاط مع s:زر

  1. كما ذكر في @دامو الجواب <s:button> / <s:link> لا يقدم النموذج بحيث يمكنك تشغيل الاستعلام الخاص بك في الصفحة الثانية لكن بالتأكيد دون البيانات المدخلة سابقا.
  2. ولكن إذا كنت قد استخدمت <a4j:support>/<a4j:ajax> الكلمات الدليلية مع حقول الإدخال في الصفحة الأولى ، يمكنك الوصول إلى البيانات في الصفحة الثانية إذا كنت داخل طويل تشغيل محادثة أو إذا كان الفول هو الدورة راقب.إذا كنت ترى شكل البيانات في الصفحة الثانية من هذا يمكن أن يكون السبب.

هناك خيار إضافة @RequestParameter الشرح الخاص بك النسخ الفول.أستنتج أن يستخدم أيضا عند تعيين f:المعلمة في طريقة العرض الخاصة بك.يعني واحد في page.xml يحصل تجاهلها ؟

نعم, مجموعة قيمة من خلال page.xml سيتم تجاوزها.أنظر إلى المثال التالي.
نفترض أن page.xml وقد السطر التالي.

<param name="name" value="#{myBean.name}"/>

و فول getter و setter طرق name الخاصية و يمكنك تعريف متغير name كما أدناه.

@RequestParameter
String name;

الآن إذا كنت استدعاء صفحة مثل هذه.

http://...../app_name/home.seam?name=william

على setName وسوف يطلق اسم property يتم تعيين إلى "وليام".

نفترض الآن يمكنك تعريف متغير الخاص بك مثل هذا .

@RequestParameter("userName")
String name;

و استدعاء صفحة مثل هذه.

http://...../app_name/home.seam?name=william&userName=tony

ثم لا يزال setName الطريقة تسمى ، name يتم تعيين الخاصية إلى "وليام".لكن هذه القيمة يتم تجاوز قيمة "توني".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top