১) লক্ষ্য অযোগ্য
এটি সিদ্ধ হয়ে যায় যে পরিচালিত শিমের দৃষ্টান্তটি নিজেই ঠিক তেমন ইএল তে সনাক্তকারী (পরিচালিত শিমের নাম) দ্বারা পাওয়া যায়নি #{bean}
।
কারণ চিহ্নিত করে তিনটি ধাপে বিভক্ত করা যেতে পারে:
ক। শিম কে পরিচালনা করছেন?
খ। (ডিফল্ট) পরিচালিত শিমের নাম কী?
গ। ব্যাকিং শিমের ক্লাসটি কোথায়?
1A। শিম কে পরিচালনা করছেন?
প্রথম পদক্ষেপটি শিমের দরিদ্র ব্যবস্থাপনার জন্য কোন শিম ম্যানেজমেন্ট কাঠামো দায়ী তা পরীক্ষা করা হবে। এটি কি জেএসএফের মাধ্যমে @ManagedBean
? নাকি এটি সিডিআই এর মাধ্যমে @Named
? নাকি এটি বসন্তের মাধ্যমে @Component
? আপনি কি নিশ্চিত হতে পারেন যে আপনি একাধিক শিম পরিচালনা কাঠামো নির্দিষ্ট টীকাগুলিকে খুব একই ব্যাকিং শিম শ্রেণিতে মিশ্রিত করছেন না? যেমন @Named @Component
, বা @Named @ManagedBean
, বা @ManagedBean @Component
। এটা ভুল. শিমটি সর্বাধিক একটি মটরশুটি পরিচালনা কাঠামো দ্বারা পরিচালনা করা উচিত এবং সেই কাঠামোটি সঠিকভাবে কনফিগার করা উচিত। আপনার যদি ইতিমধ্যে কোনটি বেছে নেওয়ার ধারণা নেই, তবে ব্যাকিং শিম (@ ম্যানেজডবিয়ান) বা সিডিআই বিনস (@ নামযুক্ত) এর দিকে যান? এবং স্প্রিং জেএসএফ সংহত: জেএসএফ পরিচালিত শিমের মধ্যে একটি স্প্রিং উপাদান / পরিষেবা কীভাবে ইনজেক্ট করবেন?
সেক্ষেত্রে এটি জেএসএফ যিনি এর মাধ্যমে মটরশুটি পরিচালনা করছেন @ManagedBean
, তারপরে আপনাকে নিম্নলিখিতগুলি নিশ্চিত করা দরকার:
faces-config.xml
রুট ঘোষণা JSF 2.0 সঙ্গে সামঞ্জস্যপূর্ণ। সুতরাং এক্সএসডি ফাইল এবং version
অবশ্যই কমপক্ষে জেএসএফ 2.0 বা উচ্চতর নির্দিষ্ট করতে হবে এবং এইভাবে 1.x নয়।
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
JSF 2.1 জন্য, শুধু প্রতিস্থাপন 2_0
এবং 2.0
দ্বারা 2_1
এবং 2.1
যথাক্রমে।
আপনি যদি জেএসএফ ২.২ বা উচ্চতর হন, তবে নিশ্চিত হয়ে নিন যে আপনি সমস্ত জায়গার xmlns.jcp.org
পরিবর্তে নেমস্পেস ব্যবহার করছেন java.sun.com
।
<faces-config
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
version="2.2">
JSF 2.3 জন্য, শুধু প্রতিস্থাপন 2_2
এবং 2.2
দ্বারা 2_3
এবং 2.3
যথাক্রমে।
আপনি দুর্ঘটনাক্রমে javax.annotation.ManagedBean
পরিবর্তে আমদানি করেন নি javax.faces.bean.ManagedBean
। আইডিই স্বতঃপূরণ দিয়ে দেখুন, গ্রহনটি তালিকার প্রথম আইটেম হিসাবে ভুলটিকে অটোসজেস্ট হিসাবে পরিচিত।
- আপনি
@ManagedBean
কোনও জেএসএফ 1.x স্টাইল <managed-bean>
এন্ট্রি দ্বারা faces-config.xml
খুব একই ব্যাকিং শিমের ক্লাসে আলাদাভাবে পরিচালিত শিমের নামটি ওভাররাইড করেননি । এই এক এর আগে প্রাধান্য পাবে @ManagedBean
। faces-config.xml
জেএসএফ ২.০ থেকে কোনও ম্যানেজড শিম নিবন্ধন করা প্রয়োজন নয়, কেবল এটি সরিয়ে দিন।
- আপনার রানটাইম ক্লাসপথটি JSF API সম্পর্কিত JARs এ পরিষ্কার এবং সদৃশ। আপনি একাধিক জেএসএফ বাস্তবায়ন (মোজাররা এবং মাইফিস) মিশ্রণ করছেন না তা নিশ্চিত করুন। লক্ষ্যযুক্ত ধারকটি ইতিমধ্যে জেএসএফ এপিআইটিকে বাক্সের বাইরে গুঁড়িয়ে দিলে আপনি ওয়েব অ্যাপের সাথে অন্য কোনও জেএসএফ বা জাভা ইই এপিআই জার ফাইল সরবরাহ করবেন না তা নিশ্চিত করুন। জেএসএফ ইনস্টলেশন নির্দেশের জন্য আমাদের জেএসএফ উইকি পৃষ্ঠার "জেএসএফ ইনস্টল করা" বিভাগটিও দেখুন । আপনি যদি কনটেইনার না হয়ে বরং ওয়ার থেকে ধারক-বান্ডেলযুক্ত জেএসএফকে আপগ্রেড করতে চান তবে নিশ্চিত হয়ে নিন যে আপনি টার্গেট ধারককে ওয়ার-বান্ডেলযুক্ত জেএসএফ এপিআই / ইমপ্লিট ব্যবহার করার নির্দেশ দিয়েছেন।
- আপনি যদি কোনও জেআর জেএসএফ পরিচালিত মটরশুটি প্যাকেজিং করে থাকেন তবে জারের কমপক্ষে একটি জেএসএফ 2.0 উপযুক্ত কিনা তা নিশ্চিত হয়ে নিন
/META-INF/faces-config.xml
। আরও দেখুন কীভাবে জেএসএফ পরিচালিত মটরশুটিগুলি জার ফাইলের মধ্যে সরবরাহ করা হয়?
আপনি থাকেন আসলে জুরাসিক JSF 1.x ব্যবহার করে, এবং আপনি আপগ্রেড করতে পারছি না, তাহলে আপনি মাধ্যমে শিম রেজিস্টার করতে হবে <managed-bean>
সালে faces-config.xml
পরিবর্তে @ManagedBean
। আপনার প্রকল্পের নির্মাণের পথটি ঠিক করতে ভুলবেন না যেন আপনার আর জেএসএফ ২.x লাইব্রেরি নেই (যাতে @ManagedBean
টীকাটি বিভ্রান্তিকরভাবে সফলভাবে সংকলন না করে)।
যদি সিডিআই হ'ল যিনি এর মাধ্যমে মটরশুটি পরিচালনা করছেন @Named
তবে আপনাকে নিম্নলিখিতগুলি নিশ্চিত করা দরকার:
ওয়ারে সিডিআই /WEB-INF/beans.xml
সক্ষম করতে সিডিআই 1.0 (জাভা EE 6) এর জন্য একটি ফাইল প্রয়োজন । এটি খালি থাকতে পারে বা এটিতে কেবল নিম্নলিখিত লিখিত সামগ্রী থাকতে পারে:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
CDI 1.1 (জাভা EE 7) কোনো ছাড়া beans.xml
, অথবা একটি খালি beans.xml
ফাইল, বা CDI 1.0 সামঞ্জস্যপূর্ণ উপরোক্ত সঙ্গে beans.xml
CDI 1.0 হিসাবে একই আচরণ করবে। সেখানে যখন একটি CDI 1.1 সামঞ্জস্যপূর্ণ beans.xml
একটি সুনির্দিষ্ট সঙ্গে version="1.1"
, তাহলে এটি ডিফল্টভাবে কেবল নাম নিবন্ধন করতে পারবেন @Named
মটরশুটি সঙ্গে একটি সুনির্দিষ্ট CDI সুযোগ টীকা যেমন @RequestScoped
, @ViewScoped
, @SessionScoped
, @ApplicationScoped
, ইত্যাদি যদি আপনি সব মটরশুটি রেজিস্টার যেমন CDI পরিচালিত মটরশুটি মনস্থ এমনকি যারা একটি সুনির্দিষ্ট ছাড়া সিডিআই সুযোগ, নীচের সিডিআই ১.১ ব্যবহার করুন সেটের /WEB-INF/beans.xml
সাথে সামঞ্জস্যপূর্ণ bean-discovery-mode="all"
(ডিফল্টটি হ'ল bean-discovery-mode="annotated"
)।
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
version="1.1" bean-discovery-mode="all">
</beans>
bean-discovery-mode="annotated"
(ডিফল্ট) সাথে সিডিআই ১.১+ ব্যবহার করার সময়, নিশ্চিত হয়ে নিন যে আপনি দুর্ঘটনাক্রমে javax.faces.bean.RequestScoped
কোনও সিডিআই স্কোপের পরিবর্তে কোনও জেএসএফ স্কোপটি আমদানি করেননি javax.enterprise.context.RequestScoped
। আইডিই স্বতঃপূরণ দিয়ে দেখুন।
- মোজাররা ২.৩.০-২.৩.২ এবং সিডিআই ১.১++
bean-discovery-mode="annotated"
(ডিফল্ট) সহ ব্যবহার করার সময়, বাগের কারণে আপনার মোজারাকে ২.৩.৩ বা আরও উন্নত করতে হবে । যদি আপনি আপগ্রেড করতে পারছি না, তাহলে আপনি সেটে পারেন প্রয়োজন bean-discovery-mode="all"
মধ্যে beans.xml
, অথবা JSF 2.3 নির্দিষ্ট করা @FacesConfig
যুদ্ধে একটি অবাধ বর্গ উপর টীকা (সাধারণত একটি অ্যাপ্লিকেশন কিছু বাছাই প্রারম্ভে বর্গ scoped)।
- টমক্যাট এবং জেটির মতো জাভাবিহীন EE পাত্রে সিডিআই বান্ডিল সহ শিপ হয় না। আপনাকে এটি ম্যানুয়ালি ইনস্টল করতে হবে। JAR (গুলি) গ্রন্থাগারটি যুক্ত করার চেয়ে কিছুটা বেশি কাজ। টমক্যাটের জন্য, নিশ্চিত হয়ে নিন যে আপনি এই উত্তরের নির্দেশাবলী অনুসরণ করেছেন: টমকেটে সিডিআই কীভাবে ইনস্টল করবেন এবং ব্যবহার করবেন?
- আপনার রানটাইম ক্লাসপথটি সিডিআই এপিআই সম্পর্কিত জেআর-তে পরিষ্কার এবং সদৃশ। আপনি একাধিক সিডিআই বাস্তবায়ন (ওয়েল্ড, ওপেনবিয়ানস, ইত্যাদি) মেশাচ্ছেন না তা নিশ্চিত করুন। লক্ষ্যমাত্রার ধারকটি ইতিমধ্যে সিডিআই এপিআইটি বাক্সটি বের করে দিলে আপনি ওয়েব অ্যাপের সাথে অন্য কোনও সিডিআই বা জাভা ইই এপিআই জার ফাইল সরবরাহ করবেন না তা নিশ্চিত করুন।
যদি আপনি জেআরএফ-তে জেএসএফ ভিউগুলির জন্য সিডিআই পরিচালিত মটরশুটি প্যাকেজিং করেন তবে জার কমপক্ষে একটি বৈধ /META-INF/beans.xml
(যা খালি রাখা যেতে পারে) তা নিশ্চিত করুন।
যদি এটি বসন্তের মাধ্যমে শিমটি পরিচালনা করছে @Component
তবে তারপরে আপনাকে নিম্নলিখিতটি নিশ্চিত করা দরকার:
এর ডকুমেন্টেশন অনুসারে বসন্ত ইনস্টল এবং সংহত করা হচ্ছে । গুরুত্বপূর্ণভাবে, আপনার কমপক্ষে এটি থাকা দরকার web.xml
:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
এবং এটি এতে faces-config.xml
:
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
(উপরের দিকে স্প্রিংয়ের বিষয়ে আমি জানি - আমি স্প্রিং করি না - অন্যান্য সম্ভাব্য বসন্ত সম্পর্কিত কারণগুলির সাথে সম্পাদনা / মন্তব্য করতে দ্বিধা বোধ করি; উদাহরণস্বরূপ কয়েকটি এক্সএমএল কনফিগারেশন সম্পর্কিত সমস্যা)
যদি এটি একটি এর পুনরায় কারক উপাদান যারা তার মাধ্যমে (নেস্টেড) শিম পরিচালনার এর var
অ্যাট্রিবিউট (যেমন <h:dataTable var="item">
, <ui:repeat var="item">
, <p:tabView var="item">
, ইত্যাদি) এবং আপনি আসলে পেয়েছিলাম একটি "উদ্দিষ্ট পৌঁছানো যায় না এমন, শনাক্তকারী 'আইটেম' নাল করার সংকল্প", তারপর আপনি নিচের নিশ্চিত করা প্রয়োজন :
#{item}
উল্লেখ করা হয় না binding
কোন সন্তান উপাদানের attribtue। এটি binding
ভিউ বিল্ড সময় চলাকালীন সময়ে নয়, এন্টিবিউট রান হিসাবে ভুল । তদুপরি, উপাদান গাছের মধ্যে শারীরিকভাবে কেবল একটি উপাদান রয়েছে যা প্রতিটি পুনরাবৃত্তির রাউন্ডের সময় কেবল পুনরায় ব্যবহৃত হয়। অন্য কথায়, আপনি আসলে binding="#{bean.component}"
পরিবর্তে ব্যবহার করা উচিত binding="#{item.component}"
। তবে এর থেকে আরও ভাল হ'ল উপাদানটি বাইনিংকে পুরোপুরি বিন থেকে মুক্তি দেওয়া এবং আপনি যেভাবে সমস্যাটি সমাধান করার জন্য ভেবেছিলেন সেই সমস্যাটির জন্য অনুসন্ধান / সঠিক পদ্ধতি জিজ্ঞাসা করা। আরও দেখুন কীভাবে জেএসএফ-এ 'বাঁধাই করা' বৈশিষ্ট্যটি কাজ করে? কখন এবং কীভাবে এটি ব্যবহার করা উচিত?
1B। (ডিফল্ট) পরিচালিত শিমের নাম কী?
দ্বিতীয় পদক্ষেপটি নিবন্ধিত পরিচালিত শিমের নামটি পরীক্ষা করা হবে। জেএসএফ এবং স্প্রিং ইউজ কনভেনশনগুলি জাভাবিয়ান স্পেসিফিকেশনকে মেনে চলে সিডিআই সিডিআই ইমপ্ল / সংস্করণ অনুসারে ব্যতিক্রম।
FooBean
নীচের মতো একটি ব্যাকিং শিমের ক্লাস,
@Named
public class FooBean {}
সমস্ত শিম ম্যানেজমেন্ট ফ্রেমওয়ার্কগুলিতে #{fooBean}
জাভাবিয়ান স্পেসিফিকেশন অনুযায়ী একটি ডিফল্ট পরিচালিত শিমের নাম থাকবে ।
FOOBean
নীচের মতো একটি ব্যাকিং শিমের ক্লাস,
@Named
public class FOOBean {}
যার অযোগ্য শ্রেণিবদ্ধ নামটি কমপক্ষে দুটি রাজধানী দিয়ে শুরু হয় জেএসএফ এবং স্প্রিংয়ের ঠিক অযোগ্য শ্রেণির নামের একটি ডিফল্ট পরিচালিত শিমের নাম থাকবে #{FOOBean}
, এটি জাভাবিয়ান স্পেসিফিকেশন অনুসারে হবে। CDI, এটি কারণে জুন 2015 আগে, কিন্তু (2.2.14 / 2.3.0.B1 / 3.0.0.A9) জুন 2015 পরে মুক্তি জোড় সংস্করণে না কিংবা OpenWebBeans সালে মুক্তি জোড় সংস্করণে কেনার ক্ষেত্রে দেখা যায় একটি ভুল সিডিআই অনুমান । ঐ জোড় সংস্করণে এবং সব OWB সংস্করণে এটি প্রথম অক্ষর শুধুমাত্র সঙ্গে lowercased হয় #{fOOBean}
।
যদি আপনি foo
নীচের মত স্পষ্টভাবে একটি পরিচালিত শিমের নামটি নির্দিষ্ট করে থাকেন,
@Named("foo")
public class FooBean {}
বা equivalently সঙ্গে @ManagedBean(name="foo")
বা @Component("foo")
, তাহলে এটি শুধুমাত্র দ্বারা উপলব্ধ করা হবে #{foo}
এইভাবে এবং না দ্বারা #{fooBean}
।
1c। ব্যাকিং শিমের ক্লাসটি কোথায়?
তৃতীয় পদক্ষেপটি ডাব চেক করা হবে যদি ব্যাকিং শিম শ্রেণিটি বিল্ট ও মোতায়েন করা ওয়ার ফাইলটিতে সঠিক জায়গায় থাকে। আপনি প্রকৃতপক্ষে কোড লেখার ক্ষেত্রে ব্যস্ত হয়ে পড়ে এবং অধ্যাবসায় ব্রাউজারে F5 টিপলে আপনি পুরোপুরি পরিষ্কার, পুনর্নির্মাণ, পুনর্নির্মাণ এবং প্রকল্প এবং সার্ভারটি পুনরায় চালু করার বিষয়টি নিশ্চিত করুন। যদি এখনও নিরর্থক হয়, বিল্ড সিস্টেমটি একটি ওয়ার ফাইল তৈরি করতে দেয় যা আপনি তারপরে একটি জিপ সরঞ্জামের সাহায্যে এক্সট্রাক্ট এবং পরিদর্শন করতে পারেন। .class
ব্যাকিং শিম বর্গের সংকলিত ফাইলটি অবশ্যই এর প্যাকেজ কাঠামোর মধ্যে থাকা উচিত /WEB-INF/classes
। অথবা, যখন এটি জেআর মডিউলের অংশ হিসাবে প্যাকেজ করা থাকে, তখন সংকলিত ফাইলযুক্ত জেআর .class
অবশ্যই থাকতে হবে /WEB-INF/lib
এবং যেমন EAR এর /lib
বা অন্য কোথাও নয়।
আপনি অন্ধকার ব্যবহার করেন, তাহলে যে ব্যাকিং শিম ক্লাসে তা নিশ্চিত করুন src
এবং এইভাবে না WebContent
, এবং নিশ্চিত যে প্রকল্পের> বিল্ড স্বয়ংক্রিয়ভাবে সক্রিয় করা হয়। আপনি ম্যাভেন ব্যবহার করেন, তাহলে যে ব্যাকিং শিম ক্লাসে তা নিশ্চিত করুন src/main/java
এবং এইভাবে না মধ্যে src/main/resources
বা src/main/webapp
।
আপনি যদি EJB + WAR (গুলি) এর সাথে EAR এর অংশ হিসাবে ওয়েব অ্যাপ্লিকেশনটি প্যাকেজিং করছেন তবে আপনাকে নিশ্চিত করতে হবে যে ব্যাকিং শিমের ক্লাসগুলি ওয়ার মডিউল এবং এইভাবে EAR মডিউল বা EJB মডিউলটিতে নয়। ব্যবসায়ের স্তরটি (ইজেবি) অবশ্যই কোনও ওয়েব স্তর (ওয়ার) সম্পর্কিত নিদর্শন থেকে মুক্ত থাকতে হবে, যাতে ব্যবসায়ের স্তরটি একাধিক বিভিন্ন ওয়েব স্তরের (জেএসএফ, জ্যাকস-আরএস, জেএসপি / সার্ভলেট ইত্যাদি) পুনরায় ব্যবহারযোগ্য হয়।
২. লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'সত্তা' বাতিল হয়ে গেছে
এই নিচে boils নেস্টেড সম্পত্তি entity
হিসেবে #{bean.entity.property}
ফিরে null
। এটি কেবল তখনই প্রকাশ পায় যখন জেএসএফকে নীচের মতো একটি ইনপুট উপাদানগুলির মাধ্যমে মান নির্ধারণ করা প্রয়োজন property
, যখন #{bean.entity}
আসলে ফিরে আসে null
।
<h:inputText value="#{bean.entity.property}" />
আপনাকে নিশ্চিত করতে হবে যে আপনি কোনও @PostConstruct
, বা <f:viewAction>
পদ্ধতিতে মডেল সত্তা আগেই প্রস্তুত করেছেন বা add()
আপনি যদি CRUD তালিকা এবং / অথবা একই দৃশ্যে ডায়লগগুলির সাথে কাজ করছেন তবে কোনও ক্রিয়া পদ্ধতি method
@Named
@ViewScoped
public class Bean {
private Entity entity; // +getter (setter is not necessary).
@Inject
private EntityService entityService;
@PostConstruct
public void init() {
// In case you're updating an existing entity.
entity = entityService.getById(entityId);
// Or in case you want to create a new entity.
entity = new Entity();
}
// ...
}
এর গুরুত্ব হিসাবে @PostConstruct
; নিয়মিত কনস্ট্রাক্টরে এটি করা আপনি যদি সিম ম্যানেজমেন্ট ফ্রেমওয়ার্ক ব্যবহার করেন যা সিডিআইয়ের মতো প্রক্সি ব্যবহার করে তবে ব্যর্থ হবে । সর্বদা @PostConstruct
পরিচালিত শিম দৃষ্টান্ত সূচনাতে @PreDestroy
হুক ব্যবহার করুন (এবং পরিচালিত শিমের দুর্যোগ ধ্বংসের জন্য হুক ব্যবহার করুন)। অতিরিক্ত হিসাবে, কোনও কনস্ট্রাক্টরে আপনার এখনও কোনও ইনজেকশনের নির্ভরতা অ্যাক্সেস করতে পারবেন না, কনস্ট্রাক্টরে @ ইনজেক্ট শিমটি অ্যাক্সেস করার সময় নলপয়েন্টারএক্সসেপশনটিও দেখুন ।
যদি এর entityId
মাধ্যমে সরবরাহ করা হয় তবে <f:viewParam>
আপনার <f:viewAction>
পরিবর্তে এটি ব্যবহার করতে হবে @PostConstruct
। আরও দেখুন কখন চ ব্যবহার করবেন: ভিউএকশন / প্রাকরেন্ডারভিউ বনাম পোস্ট কনস্ট্রাক্ট?
আপনি null
কেবল add()
অ্যাকশন পদ্ধতিতে তৈরি করার ক্ষেত্রে পোস্টব্যাকের সময় আপনি অ- মডেলটি সংরক্ষণ করেছেন তাও আপনাকে নিশ্চিত করতে হবে । সিমকে দেখার সুযোগের মধ্যে রেখে দেওয়া সবচেয়ে সহজ হবে। সঠিক শিমের সুযোগটি কীভাবে চয়ন করবেন তাও দেখুন ?
৩. লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'নাল' নাল ফেরায়
এটি আসলে # 2 এর মতোই কারণ, কেবলমাত্র (পুরানো) EL প্রয়োগ ব্যতিক্রম বার্তায় প্রদর্শিত সম্পত্তি নাম সংরক্ষণে কিছুটা বগি যা শেষ পর্যন্ত ভুলভাবে 'নাল' হিসাবে প্রকাশিত হয়েছে। এটি কেবলমাত্র ডিবাগিং এবং ফিক্সিংকে আরও শক্ত করে তোলে যখন আপনি বেশ কিছু নেস্টেড বৈশিষ্ট্যগুলি পছন্দ করেন #{bean.entity.subentity.subsubentity.property}
।
সমাধানটি এখনও একইরকম: নিশ্চিত হয়ে নিন যে প্রশ্নে নীড়িত সত্তা null
সর্বস্তরে নয় ।
৪. লক্ষ্যমাত্রা অপ্রকাশ্য, '' 0 '' বাতিল হয়ে গেছে
এটি # 2 হিসাবে একই কারণ রয়েছে, কেবলমাত্র (পুরানো) EL বাস্তবায়ন ব্যতিক্রম বার্তাটি গঠনে বগি। এটি কেবল তখনই উদ্ভাসিত হয় যখন আপনি []
EL তে ব্রেস সংকেত ব্যবহার করেন #{bean.collection[index]}
যেখানে #{bean.collection}
নিজে নিজেই নাল নয়, তবে নির্দিষ্ট সূচীতে আইটেমটি বিদ্যমান নেই। এই জাতীয় বার্তাকে তখন ব্যাখ্যা করতে হবে:
লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'সংগ্রহ [0]' বাতিল হয়েছে
সমাধানটি # 2 এর মতোও রয়েছে: সংগ্রহের আইটেমটি উপলব্ধ কিনা তা নিশ্চিত করুন।
৫) লক্ষ্য অচিহ্নিত, 'ব্র্যাকেটসফিক্স' বাতিল হয়ে গেছে
এটি আসলে # 4 হিসাবে একই কারণ রয়েছে, কেবলমাত্র (পুরাতন) EL বাস্তবায়ন ব্যতিক্রম বার্তায় প্রদর্শিত পুনরুক্তি সূচক সংরক্ষণে কিছুটা বগি, যা শেষ পর্যন্ত ভুলভাবে 'ব্র্যাকেটসফিক্স' হিসাবে প্রকাশিত হয়েছে যা সত্যই চরিত্র ]
। আপনি সংগ্রহে একাধিক আইটেম থাকলে এটি কেবলমাত্র ডিবাগিং এবং ফিক্সিংকে আরও শক্ত করে তোলে।
অন্যান্য সম্ভাব্য কারণগুলি javax.el.PropertyNotFoundException
: