এর মতো ভিউ প্যারাম সংজ্ঞায়নের মধ্যে পার্থক্য কী:
<f:metadata>
<f:viewParam name="id" value="#{someBean.id}"/>
</f:metadata>
এবং ম্যানেজডবিনে এই জাতীয় সম্পত্তিটিকে সংজ্ঞায়িত করে:
@ManagedProperty(value = "#{param.id}")
private Integer id;
উত্তর:
<f:viewParam>:আপডেট মডেল মান পর্যায়ের সময় মান সেট করে (যেহেতু এটি প্রসারিত হয় UIInput)।
সেট মান সময় পাওয়া যায় না @PostConstructতাই আপনি একটি অতিরিক্ত প্রয়োজন, <f:event type="preRenderView" listener="#{bean.init}" />ভিতরে <f:metadata>করতে আরম্ভের / সেট মান উপর ভিত্তি করে প্রিলোডিং। জেএসএফ ২.২ থেকে যেহেতু আপনি তার <f:viewAction>পরিবর্তে ব্যবহার করতে পারেন ।
নেস্টেড <f:converter>এবং <f:validator>আরও সূক্ষ্ম ধরণের রূপান্তর / বৈধতার জন্য মঞ্জুরি দেয় । এমনকি একটি <h:message>সংযুক্ত করা যেতে পারে।
কোনও ইউআরএলে প্যারামিটারের includeViewParamsবৈশিষ্ট্য <h:link>বা includeViewParams=trueঅনুরোধ ব্যবহার করে জিইটি কোয়েরি স্ট্রিং হিসাবে অন্তর্ভুক্ত করা যেতে পারে ।
বিনের সাথে ব্যবহার করা যেতে পারে @RequestScopedতবে এটি শিমটি হওয়া দরকার @ViewScopedযদি আপনি দৃশ্যের সাথে আবদ্ধ ফর্মগুলির কারণে কোনও বৈধতা ব্যর্থতা থেকে বেঁচে থাকার জন্য প্যারামিটারগুলি চান, অন্যথায় আপনাকে <f:param>কমান্ডের মাধ্যমে পরবর্তী অনুরোধগুলির জন্য সমস্ত অনুরোধের পরামিতিগুলি ম্যানুয়ালি ধরে রাখতে হবে উপাদান।
উদাহরণ :
<f:metadata>
<f:viewParam id="user_id" name="id" value="#{bean.user}"
required="true" requiredMessage="Invalid page access. Please use a link from within the system."
converter="userConverter" converterMessage="Unknown user ID."
/>
</f:metadata>
<h:message for="user_id" />
সঙ্গে
private User user;
এবং একটি @FacesConverter("userConverter")। Http://example.com/context/user.xhtml?id=123 দ্বারা পৃষ্ঠাটি চাওয়ানো idকনভার্টারের মাধ্যমে প্যারামিটারটি পাস করবে এবং Userবস্তুকে বিনের সম্পত্তি হিসাবে সেট করবে ।
@ManagedProperty:শিম তৈরির সাথে সাথেই মান নির্ধারণ করে।
সেট মানটি উপলব্ধ থাকে @PostConstructযা সেট মানের উপর ভিত্তি করে অন্যান্য বৈশিষ্ট্যগুলির সহজ সূচনা / প্রিলোডিংয়ের অনুমতি দেয়।
ঘোষণামূলক রূপান্তর / বৈধতার দর্শন হিসাবে মঞ্জুরি দেয় না।
#{param}অনুরোধ সুযোগের চেয়ে বিস্তৃত সুযোগ সহ মটরশুটিতে পরিচালিত সম্পত্তির অনুমতি নেই, সুতরাং শিমটি হওয়া দরকার @RequestScoped।
যদি আপনি #{param}পরবর্তী পোস্টের অনুরোধগুলিতে উপস্থিত থাকার কোনও পরিচালিত সম্পত্তি নির্ভর করেন তবে আপনাকে <f:param>এটি UICommandউপাদানগুলির মতো অন্তর্ভুক্ত করতে হবে ।
উদাহরণ :
@ManagedProperty("#{param.id}")
private Long id;
private User user;
@EJB
private UserService userService;
@PostConstruct
public void init() {
user = userService.find(id);
}
কিন্তু আপনি বৈধতা নিজেকে পরিচালনা করতে, যখনই কোনো userহল nullপরিবর্তন ঘটানোর দ্বারা FacesContext#addMessage()বা কিছু।
উভয় এবং বাধ্যতামূলক হলে আপনি এগুলি উভয়ই ব্যবহার করতে পারেন । আপনি কেবল সূক্ষ্ম দানযুক্ত রূপান্তর / বৈধতা প্রয়োগ করতে পারবেন না।@PostConstructincludeViewParams
@ManagedPropertyএকটি অনুরোধের পরামিতিটিকে অসম্ভব করে তোলে ।
<f:event type="preRenderView">আগত জেএসএফ ২.২ দ্বারা আহবান করা হয়েছে <f:viewAction>।
2 অন্যান্য পার্থক্য:
@ManagedPropertyকেবল জেএসএফ পরিচালিত মটরশুটি দিয়ে ব্যবহারযোগ্য, সিডিআই ( @Named) দ্বারা পরিচালিত মটরশুটি দিয়ে নয় ;
<f:viewParam> শুধুমাত্র জিইটি অনুরোধের পরামিতিগুলির সাথে কাজ করে।