Javax.el.PerertyNotFoundException চিহ্নিত করুন এবং সমাধান করছেন: লক্ষ্য অযোগ্য


127

EL তে যেমন কোনও পরিচালিত শিমের রেফারেন্স দেওয়ার চেষ্টা করার #{bean.entity.property}সময়, কখনও কখনও একটি javax.el.PropertyNotFoundException: Target Unreachableব্যতিক্রম ছোঁড়া হয়, সাধারণত যখন শিমের সম্পত্তি সেট করা থাকে, বা যখন শিমের ক্রিয়া শুরু করা হয়।

এখানে পাঁচটি বিভিন্ন ধরণের বার্তা রয়েছে বলে মনে হচ্ছে:

  1. লক্ষ্যহীন অ্যাক্সেসযোগ্য, শনাক্তকারী 'বিন' শূন্য করার জন্য সমাধান হয়েছে resolved
  2. লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'সত্তা' বাতিল হয়ে গেছে
  3. লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'নাল' নাল ফেরাল
  4. লক্ষ্যহীন অ্যাক্সেসযোগ্য, '' 0 '' বাতিল হয়ে গেছে
  5. লক্ষ্যহীন অ্যাক্সেসযোগ্য, 'ব্র্যাকেটসফিক্স' বাতিল হয়ে গেছে

এরা সবাই কি বোঝাতে চাইছে? কীভাবে তাদের সৃষ্টি হয় এবং কীভাবে তাদের সমাধান করা উচিত?


যারা ওয়েবলগিক ব্যবহার করছেন তাদের জন্য এই লিঙ্কটি ব্যবহার করে দেখুন। /programming/45422943/why-is-target-unreachable-
شناختfier

যারা বসন্ত এবং ওয়েবলোগিক ব্যবহার করেন তাদের জন্য এই লিঙ্কটি দেখার চেষ্টা করুন। /programming/45422943/why-is-target-unreachable-
شناختfier

হঠাৎ করেই, এটি আমার জন্য ভেঙে গেল ... আমি সার্ভারটি বন্ধ করে, জাভ্যাক্স.ফেসস.জার (মোজাররা) মুছে ফেলা, আমার বিল্ড ডিরেক্টরিটি মোছা করে এবং আমার ওয়েবলজিক সার্ভারের \ tmp cleaning সাফ করে এটিকে (এটি আমার শিমকে চিনতে পারছি না) ঠিক করেছি I এবং ডোমেনে \ ক্যাশে \ ফোল্ডারগুলি আবার সার্ভার শুরু করে, প্রকাশের চেষ্টা করছে এবং ব্যর্থ হয়েছে কারণ এটি জাভ্যাক্স খুঁজে পাচ্ছে না, এসভিএন-জাভ্যাক্স.ফেস.জার মুছে ফেলা হচ্ছে (যাতে আপনি কেবল এটিকে সরিয়ে ফেলতে পারেন এবং তারপরে এটিকে আবার সরিয়ে দিন) এবং প্রকাশনা। হঠাৎ করেই, এটি আবার কাজ করে ...
অ্যান্ড্রু

মোতায়েনের সময় প্রাসঙ্গিক লগ বার্তাগুলির জন্য উপরের কয়েকটি লাইন পরীক্ষা করে দেখুন, এখানে এটিই আসল মূল কারণ: Class [ Lorg/mxchange/jfinancials/model/receipt/FinancialAdminReceiptSessionBeanRemote; ] not found. Error while loading [ cl ass org.mxchange.jfinancials.beans.financial.model.receipt.FinancialAdminReceiptWebRequestBean ]]]এবং বলেছে যে শিম ( FinancialAdminReceiptWebRequestBean) খুঁজে পাওয়া যায়নি এবং nullনিশ্চিত হয়ে সমাধান করা যায়নি । আর একটি সাধারণ ভুল হ'ল, উদাহরণস্বরূপ ক্লাস / ইন্টারফেসের নাম পরিবর্তন বা স্থানান্তরকরণের (বা ভুলে যাওয়া clean) পরে অ্যাপ্লিকেশন সার্ভারটি পুনরায় চালু না করা ।
রোল্যান্ড

উত্তর:


238

১) লক্ষ্য অযোগ্য

এটি সিদ্ধ হয়ে যায় যে পরিচালিত শিমের দৃষ্টান্তটি নিজেই ঠিক তেমন ইএল তে সনাক্তকারী (পরিচালিত শিমের নাম) দ্বারা পাওয়া যায়নি #{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খুব একই ব্যাকিং শিমের ক্লাসে আলাদাভাবে পরিচালিত শিমের নামটি ওভাররাইড করেননি । এই এক এর আগে প্রাধান্য পাবে @ManagedBeanfaces-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.xmlCDI 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:


আমি 3 নম্বরে চলেছি #{bean.entity.property}মান আউটপুট করে কিন্তু <p:selectBooleanCheckbox value="#{bean.entity.property}"/>ব্যর্থ হয়। আমার বুলিয়ান একটি সেটর আছে। ইনপুট ক্ষেত্রে ব্যবহৃত হওয়ার সময় একই সত্তার একটি পূর্ণসংখ্যা সম্পত্তি কাজ করে । কোন ধারনা?
জ্যাস্পার ডি ভ্রিজ

: আরেকটা জিনিস মূল্য পরীক্ষণ আপনার JSF এবং CDI বাস্তবায়নের সংহত, যা আমার সমস্যা ছিল নিশ্চিত করা হয় stackoverflow.com/questions/44064995/...
জেরি বি নম্বর 1 অন্তরীণ

অনুসারে: Target Unreachable, identifier 'bean' resolved to nullমাল্টি মডিউল মাভেন প্রকল্পগুলিতে (ইজেবি, ওয়েব, কানের মডিউলগুলি রয়েছে) আপনার ওয়েব-মডিউলটি আপনার ইজবি-মডিউলের উপর নির্ভরতা ঘোষণা করেছে তা নিশ্চিত করুন। এটি ছাড়া @ManagedBeanJSF2.0 ব্যবহার করে সমাধান করা যায় না এবং আপনাকে সেগুলি ঘোষণা করতে হবে faces-config.xml। আমাকে দুই ঘন্টা ঠাহর যে আমি একটি নির্ভরতা ঘোষিত করা হয়নি (আমার কানে শুধুমাত্র ছিল ejb এবং ওয়েব) আমার ওয়েব-মডিউলে ejb অন্তর্ভুক্ত করা প্রায় টুক
ভুল

1
ক্লাসের মতো @ManagedBeanক্লাসের মতো বিশ্বব্যাপী নিখরচায় নিদর্শনগুলি প্রথমে পরিষেবা স্তর (ইজেবি প্রকল্প) এর সাথে সম্পর্কিত নয়। আরও দেখুন stackoverflow.com/questions/13011392/jsf-service-layer
BalusC

একটি শিম serializable হচ্ছে না এই ত্রুটি হতে পারে (যেমন আমি সন্দেহ মধ্যে ক্ষেত্রে দেখা যায় stackoverflow.com/questions/47533584/... (কিন্তু নিজেকে বর্তমানে চেষ্টা করা যাবে না))
Kukeltje

6

যারা এখনও আটকে আছেন তাদের জন্য ...

নেটবিয়ানস 8.1 এবং সিডিআই সহ গ্লাস ফিশ 4.1 ব্যবহার করে, কিছু কারণে আমার কাছে এই সমস্যাটি কেবল স্থানীয়ভাবে ছিল, দূরবর্তী সার্ভারে নয়। কৌশলটি কী করেছে:

-> নেটবিয়েন্স দ্বারা সরবরাহিত ডিফল্ট পোম সংস্করণের পরিবর্তে জাভা-ওয়েব-এপি 7.০ ব্যবহার করা হচ্ছে যা জাভা-ওয়েব-এপি 6.০, সুতরাং:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
    <type>jar</type>
</dependency>

-> এই জাভা-ওয়েব-এপি -7.0.jar সার্ভারে একটি লিবি হিসাবে আপলোড করুন (ডোমেন 1 ফোল্ডারে লাইব ফোল্ডার) এবং সার্ভারটি পুনরায় চালু করুন।


এটি মেলে "আপনার রানটাইম ক্লাসপথটি সিডিআই এপিআই সম্পর্কিত জেআর-তে পরিষ্কার এবং সদৃশ" " অন্য কথায়, আপনার রানটাইম ক্লাসপাথটি কোনওভাবে নকল লাইব্রেরিতে গণ্ডগোল করেছে।
বালুসসি

প্রকৃতপক্ষে, এবং আপনার জবাব আমাকে আমার সম্ভাব্য সমস্যাটি সনাক্ত করতে সহায়তা করেছে ;-) এখানে কেবলমাত্র আমার নির্দিষ্ট সমাধানের বিশদটি সরবরাহ করা, এটি কয়েকজন ব্যবহারকারীর জন্য সময় সাশ্রয় করতে পারে।
seinecle

1

আমি নিজেই এই ত্রুটিটি সমাধান করার পরে নিজের অনুসন্ধানটি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি।

প্রথমত, বালাসসির সমাধানগুলি গুরুত্ব সহকারে নেওয়া উচিত তবে বিশেষত মাভেন ব্যবহার করে একটি এন্টারপ্রাইজ অ্যাপ্লিকেশন প্রকল্প (ইএআর) তৈরি করার সময় নেটবিয়ানদের আরও সচেতন হওয়ার আরও একটি সমস্যা রয়েছে ।

নেটবিন জেনারেট করে, একটি প্যারেন্ট পম ফাইল , একটি ইআর প্রকল্প , একটি ইজেবি প্রকল্প এবং একটি ওয়ার প্রকল্প । আমার প্রকল্পের অন্য সব কিছু ঠিক আছে, এবং আমি প্রায় ধরে নিয়েছি যে সমস্যাটি সম্ভবত গ্লাস ফিশ 4.0.০ এ একটি বাগ (যা আমাকে নেটবিনে ইনস্টল করে প্লাগ করতে হয়েছিল) কারণ গ্লাস ফিশ ৪.১-এ একটি ওয়েল্ড সিডিআই বাগ রয়েছে যা নেটবিনস ৮.০ এ এমবেডড গ্লাসফিশ ৪.১ তৈরি করে। 2 প্যাচ বাদে অকেজো।

সমাধান:

সমাধানের জন্য "লক্ষ্য পৌঁছানো যায় না এমন, শনাক্তকারী 'শিম' নাল করার সংকল্প" error-

আমি প্যারেন্ট পম প্রকল্পটি ডান ক্লিক করুন এবং বৈশিষ্ট্য নির্বাচন করুন । একটি প্রোজেক্ট প্রোপার্টি ডায়ালগ প্রদর্শিত হবে, "উত্স" এ ক্লিক করুন, আপনি " উত্স / বাইনারি ফর্ম্যাটটি দেখে অবাক হবেন " 1.5 কে সেট করে এবং উইন্ডোজ 1250 এ " এনকোডিং " সেটটি । " উত্স / বাইনারি ফর্ম্যাট " কে 1.6 0r 1.7 এ পরিবর্তন করুন আপনি আপনার প্রকল্পের সিডিআই আনুগত্য করতে এবং ইউটিএফ -8 এ " এনকোডিং " করতে পছন্দ করেন।

অন্য সমস্ত সাব-প্রকল্পগুলির জন্য এটি করুন (ইআর, ইজেবি, ওয়ার) যদি তারা ইতিমধ্যে তুলনীয় না হয়। আপনার প্রকল্প চালান, এবং আপনি আবার ত্রুটি পাবেন না।

আমি আশা করি এটি একই রকম ত্রুটিযুক্ত কাউকে সাহায্য করবে।


আমি আপনার উত্তরটি সাধারণভাবে (সরাসরি সম্পর্কিত সম্পর্কিত নয় এমন অনেক ধরণের কাছে) বুঝতে খুব শক্তিশালী মনে করি এবং উত্স / বাইনারি ফর্ম্যাট এবং এনকোডিং এই ইস্যুতে ভূমিকা রাখে। আপনি কি নিশ্চিত যে এটি পরিবর্তন করা কেবল একটি ভাল / পুরো পুনর্নির্মাণই সমস্যার সমাধান করে নি যা সমস্যার সমাধান করেছে?
কুকলতজে

1

আমি আমার সমাধানটি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি, কারণ এখানে প্রদত্ত অনেক উত্তর সহায়ক হলেও আমার এখনও এই সমস্যাটি ছিল। আমার ক্ষেত্রে, আমি আমার নতুন প্রকল্পের জন্য জেএসএফ 2.3, জেডি কে 10, জী 8, সিডি 2.0 ব্যবহার করছি এবং আমি ওয়াইল্ডফ্লাই 12-তে আমার অ্যাপ্লিকেশনটি চালিয়েছি, স্ট্যান্ডেলোন.এস-প্যারামিটার দিয়ে সার্ভার শুরু করে -ডাই 8.প্রিভিউ.মোড = ওয়াইল্ডফ্লাই ওয়েবসাইটে প্রস্তাবিত হিসাবে সত্য । ওয়াইল্ডফ্লাই ১৩ ডাউনলোড করার পরে "বিন মীমাংসিত হ'ল" সমস্যাটি অদৃশ্য হয়ে গেল wild ওয়াইল্ডফ্লাই ১৩ তে ঠিক একই যুদ্ধ আপলোড করা সমস্ত কাজ করে।


1

আমি এই ত্রুটিটিতে আটকে গিয়েছি কারণ যে ক্লাসে @SpringBootApplicationআমি নিয়ামকের প্যাকেজের নামটি উল্লেখ করতে ভুলে গিয়েছিলাম in

বেস প্যাকেজটি কনফিগার করার পরিবর্তে স্প্রিংয়ের কোন উপাদানগুলি স্ক্যান করতে হয়েছিল তা নির্দেশ করে আমি আরও নির্দিষ্ট হতে চাই।

এটি এমন ছিল:

@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service"})

তবে সঠিক ফর্মটি এর মধ্যে একটি:

@ComponentScan(basePackages = {"br.com.company.project.repository", "br.com.company.project.service", "br.com.company.project.controller"})

@ComponentScan(basePackages = {"br.com.company.project")

আমি আমার সমাধানটি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি, কারণ সঠিক উত্তরটি যদিও খুব ব্যাপক, তবুও এটি (বোকামি) ভুলটি কাভার করে না :)


0

আমার ক্ষেত্রে, আমি @ নেমেড ("beanName") এ একটি বানান ভুল করেছিলাম, মনে হয় এটি "beanName" হতে পারে, তবে আমি উদাহরণস্বরূপ "beanNam" লিখেছি।


0

জাভা পাত্রে আমি ওয়াইল্ডফ্লাই 10 ব্যবহার করছি। আমি "টার্গেট অ্যাক্সেসযোগ্য, 'সত্তা' নাল" ইস্যুটি পেয়েছি। বালুসকের পরামর্শের জন্য ধন্যবাদ তবে সমাধানের বাইরে আমার সমস্যাটি ব্যাখ্যা করা হয়েছে। দুর্ঘটনাক্রমে "আমদানি com.sun.istack.logging.Logger ব্যবহার করে;" "org.jboss.logging.Logger আমদানি করুন" এর পরিবর্তে; সিডিআই জেএসএফ ইএল কার্যকর করেছে। আশা করি এটি সমাধানের উন্নতি করতে সহায়তা করবে।


0

আমারও একই সমস্যা ছিল। সমাধানটি আরও সরল হতে দেখা গেল। এটি প্রদর্শিত হয় যে একটি ডেটেবল কেবল একটি মেথড () নয়, গেটর আকারে পদ্ধতিটি চায়, যেমন getSomeMethod () চায়। ডেটেবলে আমার ক্ষেত্রে আমি ফাইন্ড রেজাল্ট কল করছিলাম। আমি আমার ব্যাকিং শিমের পদ্ধতিটিফিনড্রিসল্টস () এ পেয়েছি এবং এটি কার্যকর হয়েছে।

একটি কমান্ডবটন একটি গিফট ছাড়াই সন্ধান করেছে যা এটি কেবল আরও বিভ্রান্তিকর করে তোলে।


0

# 2 হিসাবে, আমার ক্ষেত্রে এটি প্রতিস্থাপনের পরে জাদুকরভাবে জীবনে আসে

<body>

সাথে ট্যাগ

<h:body>

জেএসএফ প্রকল্পগুলি বেশ কয়েকটি করার পরে (সরল, সত্যি বলতে কী), এখন এটিকে সেট আপ করার চেয়ে আলাদা কিছু করার কথা মনে করতে পারছি না এবং আমি প্রথমবারের মতো এ জাতীয় ত্রুটি পেয়েছি। আমি একটি খুব বেসিক লগইন পৃষ্ঠা তৈরি করছিলাম (ব্যবহারকারীর নাম, পাসওয়ার্ড, ব্যবহারকারী বিন ...) এবং যথারীতি সবকিছু সেট আপ করছিলাম। আমি যে পার্থক্যটি চিহ্নিত করেছি তা হল পূর্বোক্ত ট্যাগগুলি। কেউ এটি দরকারী বলে মনে হচ্ছে।


0

আমার ক্ষেত্রে বিষয়টি হ'ল আমি প্যারামিটারগুলি গ্রহণকারী একজন কনস্ট্রাক্টরকে অন্তর্ভুক্ত করেছি তবে ইনজেক্ট টীকা সহ কোনও ফাঁকা নির্মাণকারী নয়।

@Inject public VisitorBean() {}

আমি এটি কেবল কোনও নির্মাণকারী ছাড়াই পরীক্ষা করেছি এবং এটি কাজ করে বলেও মনে হচ্ছে।


0

১. বিষয়ের জন্য ( লক্ষ্যমাত্রা অপ্রচারযোগ্য, শনাক্তকারী 'বিন' টি বাতিল করার জন্য সমাধান করা হয়েছে) );

আমি @ বালুসসি এবং অন্যান্য ভাগকারীদের মূল্যবান উত্তরগুলি পরীক্ষা করেছি তবে আমি আমার দৃশ্যে এই সমস্যাটি ছাড়িয়েছি। আলাদা আলাদা নামের সাথে একটি নতুন এক্সএইচটিএমএল তৈরি করার পরে এবং বিভিন্ন নামের সাথে শিমের ক্লাস তৈরি করার পরে আমি কোডগুলি ধাপে নতুন বিন বিন এবং নতুন এক্সএইচটিএমএল ফাইলটিতে লিখেছি (কপি-পেস্ট না করে)।


0

আমি যখন ওয়েব.এক্সএমএল ফাইল থেকে টীকাগ্রন্থের কনফিগারেশন কনটেক্সট প্যারামকে সরান

যদি আপনি পরমের মতো হয়ে থাকেন যা নীচের মত দেখানো হয়েছে আপনাকে অবশ্যই এটি ওয়েব.এক্সএমএল ফাইল থেকে অপসারণ করতে হবে

<context-param>
    <param-name>contextClass</param-name>
    <param-value>
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext
  </param-value>
</context-param> 

কেন এটি সমাধান করে বিশদভাবে যত্ন? বা বরং এটি কেন সমস্যা সৃষ্টি করে?
কুকলতজে

-1

পুরাতন স্টাইলে জেএসএফের সাথে কাজ করা আপনাকে মটরশুটি-কনফিগারেশন.এক্সএমএল ফাইলে ( ডাব্লুইইবি -আইএনএফ ফোল্ডারে অবস্থিত) ম্যানেজ করা শিমটি সংজ্ঞায়িত করতে হবে এবং ওয়েব.এক্সএমএল ফাইলে এইভাবে একটি রেফারেন্স তৈরি করতে হবে :

মটরশুটি-config.xml

<managed-bean>
  <managed-bean-name>"the name by wich your backing bean will be referenced"</managed-bean-name>
  <managed-bean-class>"your backing bean fully qualified class name"</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>    
</managed-bean>

(আমি অন্যান্য স্কোপগুলি ব্যবহার করার চেষ্টা করেছি, তবে ...)

web.xml

<context-param>
  <param-name>javax.faces.CONFIG_FILES</param-name>
  <param-value>"/WEB-INF/beans-config.xml</param-value>
</context-param>

-2

আরেকটি ক্লু: আমি জেএসএফ ব্যবহার করছিলাম এবং এমভিএন নির্ভরতা যুক্ত করেছি: com.sun.faces jsf-api 2.2.11

    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>2.2.11</version>
    </dependency>

তারপরে, আমি প্রাইমফেসে পরিবর্তন করার চেষ্টা করেছি এবং প্রাইমফেসগুলি নির্ভরতা যুক্ত করতে চাই:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>6.0</version>
</dependency>

আমি আমার এক্সএইচটিএমএলটিকে h: p:, xMLns: p = "http://primefaces.org/ui টেমপ্লেটে যুক্ত করে রেখেছি Only কেবলমাত্র জেএসএফ দিয়ে প্রাইসিট ঠিকঠাক চলছিল, এবং ম্যানেজডিয়ান ঠিকঠাক পৌঁছেছিল When যখন আমি প্রাইমফেসগুলি যুক্ত করি। আমি পৌঁছনীয় না হওয়া অবজেক্টটি পেয়ে যাচ্ছিলাম (javax.el.propertynotfoundexception) সমস্যাটি ছিল যে জেএসএফ প্রাইমফেসগুলি নয়, ম্যানেজডবিয়ান উত্পন্ন করছিল এবং আমি এই বস্তুর জন্য প্রাইমফেসগুলি জিজ্ঞাসা করছি I Proyect ইনস্টল করুন। এই জায়গা থেকে সমস্ত ঠিক আছে। আশা করি এটি সাহায্য করবে।


2
সমস্যাটির কারণ সম্পর্কে আপনার ধারণাটি কোনও অর্থ দেয় না। প্রাইমফ্রিজগুলি মোটেও জেএসএফ বাস্তবায়ন নয়। এটি প্রয়োজনীয়তার সাথে মেলে "আপনার রানটাইম ক্লাসপথটি সিডিআই এপিআই সম্পর্কিত জেআর-তে পরিষ্কার এবং সদৃশ" " অন্য কথায়, আপনার রানটাইম ক্লাসপাথটি কোনওভাবে ডুপ্লিকেট লাইব্রেরিতে গণ্ডগোল করেছে এবং প্রাইমফ্রিজগুলি কেবল এটির আকার বাড়িয়েছিল, কারণটি তৈরি করে নি।
বালুসসি

-3

EL বর্ণিত হিসাবে {{bean.propretyName pre ব্যাখ্যা করে - আপনি গেটার / সেটার তৈরির সুস্পষ্ট বা অন্তর্নিহিত পদ্ধতি ব্যবহার করছেন এমন অনুমানের উপর সম্পত্তি নাম getPropertyName () হয়ে যায়

নামটি স্পষ্টভাবে একটি ফাংশন হিসাবে সনাক্ত করে আপনি এই আচরণটি ওভাররাইড করতে পারেন: an an bean.methodName ()} এটি ফাংশন পদ্ধতি নাম () নাম পরিবর্তন করে সরাসরি ডাকে calls

এটি সর্বদা সত্য নয় যে আপনার অ্যাক্সেসরের নাম দেওয়া হয়েছে "get ..." are


1
এটি সঠিক অনুশীলন নয় এবং এর ফলে ইনপুট উপাদানগুলির পিছনে সঠিক সেটটারগুলি আহ্বান করা অসম্ভব হয়ে পড়ে। এটিও বলা ব্যতিক্রমের কারণ হতে পারে না। এটি কেবলমাত্র তার ব্যতিরেকেই কোনও অ্যাকশন পদ্ধতিতে ভাবের action="#{bean.property}"পরিবর্তে যেমন কোনও সম্পত্তি রেফারেন্স করতে ভুল করেছিল action="#{bean.method}"
BalusC

লক্ষণীয়ভাবে, কার্যকরী প্রোগ্রামিং সহ আধুনিক জাভা বিশ্বে এই "সঠিক অনুশীলন" পরিবর্তন হচ্ছে। Dev.to/scottshipp/… এবং উল্লেখগুলি দেখুন । নোট করুন যে লম্বোকের "সাবলীল" জন্য একটি সেটিংস রয়েছে যেখানে পান / সেট যোগ করা হয় না। আমাদের সংস্থার ১০০০ জন ইঞ্জিনিয়ার রয়েছে যা বর্তমান অনুশীলনের বিষয়ে আলাদা ধারণা রয়েছে বলে মনে হয়।
sdw

1
আমি মনে করি আপনি এবং আপনার 1000 প্রকৌশলী পদ্ধতিগুলির সাথে বিভ্রান্তিকর বৈশিষ্ট্যযুক্ত।
বালাসসি

এই নকশা অনুশীলনটি খুব উচ্চ সম্মতি সহ বড় আকারের অ্যাপ্লিকেশনগুলিতে সাধারণ হয়ে উঠছে। আমি প্রস্তাব দিচ্ছি যে আপনার বিশাল জনগোষ্ঠী একটি সম্ভাব্য ত্রুটি খুঁজে বের করতে সহায়তা করার উত্তরের মানের চেয়ে বরং আপনার ডাউনটি ডিজাইন নির্দেশিকাগুলির একটি দৃশ্যের উপর ভিত্তি করে।
এসডডব্লিউ

1
তাই না? দুঃখিত, আপনি যে বিষয়ে কথা বলছেন তা আপনার কোনও ধারণা নেই তা আমি উপেক্ষা করতে পারি না।
বালুসসি

-3

আমার ক্ষেত্রে "এল-রি-১.০.জার" অনুপস্থিত ছিল।


1
সাধারণত আপনার একেবারেই প্রয়োজন হয় না, তাই বিষয়টি নিয়ে অন্য কিছু আছে। খুব সম্ভবত একটি নোংরা রানটাইম ক্লাসপাথ। সার্ভারের দ্বারা ইতিমধ্যে সরবরাহ করা লাইব্রেরিগুলি যুক্ত করে দীর্ঘমেয়াদে আরও খারাপ করার পরিবর্তে আপনার এটি ঠিক করা উচিত।
বালুসসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.