এর মতো ভিউ প্যারাম সংজ্ঞায়নের মধ্যে পার্থক্য কী:
<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()
বা কিছু।
উভয় এবং বাধ্যতামূলক হলে আপনি এগুলি উভয়ই ব্যবহার করতে পারেন । আপনি কেবল সূক্ষ্ম দানযুক্ত রূপান্তর / বৈধতা প্রয়োগ করতে পারবেন না।@PostConstruct
includeViewParams
@ManagedProperty
একটি অনুরোধের পরামিতিটিকে অসম্ভব করে তোলে ।
<f:event type="preRenderView">
আগত জেএসএফ ২.২ দ্বারা আহবান করা হয়েছে <f:viewAction>
।
2 অন্যান্য পার্থক্য:
@ManagedProperty
কেবল জেএসএফ পরিচালিত মটরশুটি দিয়ে ব্যবহারযোগ্য, সিডিআই ( @Named
) দ্বারা পরিচালিত মটরশুটি দিয়ে নয় ;
<f:viewParam>
শুধুমাত্র জিইটি অনুরোধের পরামিতিগুলির সাথে কাজ করে।