জ্যাকসবি, ক্লাসে একই নামের দুটি বৈশিষ্ট্য রয়েছে


120

জ্যাকসবি সহ, আমি এক্সএমএল ফাইলটি পড়ার চেষ্টা করি কেবলমাত্র এক্সএমএল ফাইলের কয়েকটি উপাদান আকর্ষণীয়, তাই আমি অনেক উপাদান এড়িয়ে যেতে চাই

এক্সএমএল সামগ্রী

এক্সএমএল আমি পড়ার চেষ্টা করি

<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2010 rel. 3 sp1 (http://www.altova.com)-->
<flx:ModeleREP xsi:schemaLocation="urn:test:mod_rep.xsd mod_rep.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flx="urn:test:mod_rep.xsd">
<flx:DocumentHeader>
    <flx:Identification v="04489"/>
</flx:DocumentHeader>
<flx:TimeSeries>
    <flx:Identification v="test1a"/>
    <flx:BusinessType v="A01"/>
    <flx:Product v="123a"/>
    <flx:ResourceObject codingScheme="N" v="testa"/>
    <flx:Period>
        <flx:TimeInterval v="2011-07-02T00:00/2011-07-16T00:00"/>
        <flx:Resolution v="PT2H"/>
        <flx:Pt>
            <flx:P v="1"/>
            <flx:Q unitCode="String" v="1.0"/>
            <flx:A currencyIdentifier="String" v="195.0"/>
        </flx:Pt>
    </flx:Period>
</flx:TimeSeries>
<flx:TimeSeries>
    <flx:Identification v="test2a"/>
    <flx:BusinessType v="A01"/>
    <flx:Product v="a123b"/>
    <flx:ResourceObject codingScheme="N" v="test2"/>
    <flx:Period>
        <flx:TimeInterval v="2011-07-02T00:00/2011-07-16T00:00"/>
        <flx:Resolution v="PT2H"/>
        <flx:Pt>
            <flx:P v="1"/>
            <flx:Q unitCode="String" v="1.0"/>
            <flx:A currencyIdentifier="String" v="195.0"/>
        </flx:Pt>
        <flx:Pt>
            <flx:P v="2"/>
            <flx:Q unitCode="String" v="1.0"/>
            <flx:A currencyIdentifier="String" v="195.0"/>
        </flx:Pt>
    </flx:Period>
</flx:TimeSeries>
</flx:ModeleREP>

আমার ক্লাস

@XmlRootElement(name="ModeleREP", namespace="urn:test:mod_rep.xsd")
public class ModeleREP {

  @XmlElement(name="TimeSeries")
  protected List<TimeSeries> timeSeries;

  public List<TimeSeries> getTimeSeries() {
  if (this.timeSeries == null) {
      this.timeSeries = new ArrayList<TimeSeries>();
  }
  return this.timeSeries;
  }

  public void setTimeSeries(List<TimeSeries> timeSeries) {
  this.timeSeries = timeSeries;
  }

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "TimeSeries")
public class TimeSeries {

@XmlElement(name="ResourceObject")
protected RessourceObject resourceObject;

@XmlElement(name = "Period")
protected Period period;

public RessourceObject getResourceObject() {
    return this.resourceObject;
}

public void setResourceObject(RessourceObject resourceObject) {
    this.resourceObject = resourceObject;
}

public Period getPeriod() {
    return this.period;
}

public void setPeriod(Period period) {
    this.period = period;
}

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ResourceObject")

public class RessourceObject {
@XmlAttribute(name = "codingScheme")
protected String codingScheme;

@XmlAttribute(name = "v")
protected String v;

public String getCodingScheme() {
    return this.codingScheme;
}

public void setCodingScheme(String codingScheme) {
    this.codingScheme = codingScheme;
}

public String getV() {
    return this.v;
}

public void setV(String v) {
    this.v = v;
}
}

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "Period")
public class Period {

@XmlElement(name = "TimeInterval")
protected TimeInterval timeInterval;

@XmlElement(name = "Pt")
protected List<Pt> pt;

public TimeInterval getTimeInterval() {
    return this.timeInterval;
}

public void setTimeInterval(TimeInterval timeInterval) {
    this.timeInterval = timeInterval;
}

public List<Pt> getPt() {
    if (this.pt == null) {
    this.pt = new ArrayList<Pt>();
    }
    return this.pt;
}

public void setPt(List<Pt> pt) {
    this.pt=pt;
}

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "TimeInterval")
public class TimeInterval {

@XmlAttribute(name = "v")
private String timeIntervalPeriod;

public String getTimeIntervalPeriod() {
    return this.timeIntervalPeriod;
}

public void setTimeIntervalPeriod(String timeIntervalPeriod) {
    this.timeIntervalPeriod = timeIntervalPeriod;
}

}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Pt")
public class Pt {

@XmlElement(name = "P")
protected P p;

@XmlElement(name = "A")
protected A a;

public P getP() {
    return this.p;
}

public void setP(P p) {
    this.p = p;
}

public A getA() {
    return this.a;
}

public void setA(A a) {
    this.a = a;
}
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "P")
public class P {
@XmlAttribute(name = "v")
protected String position;


public String getPosition(){
    return this.position;
}

public void setPosition(String position){
    this.position=position;
}
}

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "A")
public class A {
@XmlAttribute(name = "v")
protected String calculatedAmount;

public String getCalculatedAmount() {
    return this.calculatedAmount;
}

public void setCalculatedAmount(String calculatedAmount) {
    this.calculatedAmount = calculatedAmount;
}
}

আমি যখন xlm ফাইলটি পড়ার চেষ্টা করি তখন আমি পেয়ে যাই

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
Class has two properties of the same name "timeSeries"
    this problem is related to the following location:
        at public java.util.List testjaxp.ModeleREP.getTimeSeries()
        at testjaxp.ModeleREP
    this problem is related to the following location:
        at protected java.util.List testjaxp.ModeleREP.timeSeries
        at testjaxp.ModeleREP

আমি এই ত্রুটি বুঝতে পারি না

সম্পাদনা করুন: আমি jaxb-impl-2.1.12 ব্যবহার করি

ঠিক আছে এখন আমার কোনও ত্রুটি নেই, তবে যখন আমি আমার অবজেক্টটি পরীক্ষা করি তখন টাইমসারিজ নাল ...

সুতরাং সম্ভবত jaxb ফ্লাক্স সঙ্গে সমস্যা আছে বলে মনে হচ্ছে?

উত্তর:


204

আমিও এর মতো সমস্যার মুখোমুখি হয়েছি এবং এটি সেট করেছি।

@XmlRootElement(name="yourRootElementName")
@XmlAccessorType(XmlAccessType.FIELD)

এটি 100% কাজ করবে


8
আমারো একই ইস্যু ছিল. এমনকি এটি কার্যকর হয় যখন আমরা কেবলমাত্র @XMLAccessorType (XMLAccessType.FIELD) যুক্ত করি
রাম দত্ত শুক্লা

2
আমি সমস্যা সমাধান সরানোর@XmlAccessorType(XmlAccessType.FIELD) টীকা
হান্স Wouters

অদ্ভুত লাগছে, তবে আমি এই ব্যতিক্রম থেকে মুক্তি পেয়েছি ann @XMLRootElement @XMLAccessorType (XMLAccessType.FIELD) থেকে কেবল \ @ এক্সএমএল রুটইলেমেন্ট
অ্যালেক্স ইনটেকনো

3
জ্যাকএক্সবি টিকা-র জন্য অভ্যন্তরীণ ক্লাসগুলির সাথে একই ইস্যুতে চলে। অভ্যন্তরীণ ক্লাসগুলিতে @XMLAccessorType (XMLAccessType.FIELD) স্থাপন করা কাজ করেছে!
শোয়েব খান

দুর্দান্ত, আপনাকে অনেক ধন্যবাদ। লম্বোকের সাথে খুব সহায়ক হিসাবে সংমিশ্রণে
মাইকেল হিগনার

25

আপনি জ্যাকএক্সবি-আইএমপিএল সংস্করণটি কী ব্যবহার করছেন তা নির্দিষ্ট করেননি তবে একবার আমার একই সমস্যা হয়েছিল (জ্যাক্সবি-ইমপ্ল ২.০.৫ সহ) এবং এটি সদস্য স্তরে ব্যবহার না করে গেট লেভেলে টীকাগুলি ব্যবহার করে সমাধান করেছেন।


এটি সঠিক যে আমি সদস্য থেকে টিকাটি সরিয়েছি এবং এটি সেটারের স্তরে রেখেছি এবং এটি কার্যকর হয়েছে।
বরুণ

22

আমি এর মতো কিছু অনুরুপ সমস্যাও দেখেছি।

আমি মনে করি, এটি সেই জায়গার কারণেই যেখানে আমরা (বিন) শ্রেণিতে " @XMLElement " টীকাটি ব্যবহার করি ।

এবং আমি মনে করি, জ্যাকএক্সবি (টিকা প্রসেসর) একই ক্ষেত্রের উপাদানটির সদস্য ক্ষেত্র এবং প্রাপ্ত পদ্ধতিটিকে বিভিন্ন বৈশিষ্ট্য হিসাবে বিবেচনা করে, যখন আমরা ক্ষেত্রের স্তরে @XMLElement টীকাটি ব্যবহার করি এবং অবৈধ তালিকাটি ব্যতিক্রম নিক্ষেপ করি ।

ব্যতিক্রম বার্তা:

শ্রেণীর একই নাম "টাইমসারিজ" এর দুটি বৈশিষ্ট্য রয়েছে

গেটর পদ্ধতিতে:

    at public java.util.List testjaxp.ModeleREP.getTimeSeries()

সদস্য ক্ষেত্রে:

    at protected java.util.List testjaxp.ModeleREP.timeSeries

সমাধান: ব্যবহার করার পরিবর্তে @XmlElement মধ্যে ক্ষেত্র , এটি ব্যবহার সংগ্রহকারী পদ্ধতি।


16

সবেমাত্র এটি আমার ক্লাসে যুক্ত হয়েছে

@XmlAccessorType(XmlAccessType.FIELD)

চ্যামের মতো কাজ করেছিল


লম্বোকের @ ডেটা টীকাতেও কাজ করে।
digz6666

16

একাধিক সমাধান রয়েছে তবে মূলত আপনি যদি ভেরিয়েবল ডিক্লেয়ারেশনে টীকাগুলি দেন তবে আপনার প্রয়োজন @XmlAccessorType(XmlAccessType.FIELD)but

সুতরাং আপনি এটি করতে পারেন:

@XmlRootElement(name="MY_CLASS_A")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyClassA
{
    @XmlElement(name = "STATUS")   
    private int status;
   //.. and so on
}

বা:

@XmlRootElement(name="MY_CLASS_A")
public class MyClassA
{
    private int status;

    @XmlElement(name = "STATUS")         
    public int getStatus()
    {
    }
}

ওয়ান্ডারফুল। ধন্যবাদ :) +1
আনিস বি।

11

আপনার জ্যাকএক্সবি getTimeSeries()পদ্ধতি এবং সদস্য উভয়কেই দেখছে timeSeries। আপনি কোন JAXB বাস্তবায়ন ব্যবহার করছেন তা বা এটির কনফিগারেশন আপনি বলবেন না তবে ব্যতিক্রমটি মোটামুটি পরিষ্কার clear

সর্বজনীন java.util.List টেস্টজ্যাক্সপ.মডেলআরপি.সেটটাইমসরিজ ()

এবং

সুরক্ষিত java.util.List টেস্টজ্যাক্সপ.মডেলআরপি.টাইমসারিগুলিতে

টীকাগুলি (আপনার হিসাবে @XmlElement(name="TimeSeries")) ব্যবহার করার জন্য আপনাকে জ্যাকএক্সবি স্টাফ কনফিগার করতে হবে এবং সর্বজনীন পদ্ধতিগুলি উপেক্ষা করতে হবে।


আমি ইতিমধ্যে: @XMLElement (নাম = "টাইমসারিজ") সুরক্ষিত তালিকা <টাইমসারিজ> টাইমসারিজ;
redfox26

4
এছাড়াও আমি (এক্সএমএলএকসেসটাইপ.ফিল্ড) থেকে (এক্সএমএলএকসেসটাইপ.নোন) বদলে আমি এক্সএমএলমেন্টকে সদস্য স্তরে রাখতে পারি
redfox26

আমারও পরিবর্তনশীল
হোমআইএসইহিরথপিপিসিআইএস

8

আপনার ক্লাসের ModeleREPমতো ক্লাসটিও কনফিগার @XmlAccessorType(XmlAccessType.FIELD)করতে হবে TimeSeries

OOXS এ দেখুন


8

যদি আমরা নীচের টীকাগুলি ব্যবহার করি এবং "@XMLElement" টিকাটি সরিয়ে ফেলি, কোডটি সঠিকভাবে কাজ করা উচিত এবং ফলস্বরূপ এক্সএমএলে ক্লাস সদস্যের মতো উপাদানগুলির নাম থাকতে পারে।

@XmlRootElement(name="<RootElementName>")
@XmlAccessorType(XmlAccessType.FIELD)

"@ এক্সএমএল উপাদান" ব্যবহারের ক্ষেত্রে যদি সত্যিই প্রয়োজন হয় তবে দয়া করে এটি ক্ষেত্রের স্তর হিসাবে সংজ্ঞায়িত করুন এবং কোডটি পুরোপুরি কার্যকরভাবে কাজ করা উচিত। গেটর পদ্ধতির শীর্ষে টীকাটি সংজ্ঞায়িত করবেন না।

উল্লিখিত উপরোক্ত দুটি পদ্ধতির চেষ্টা করেই সমস্যাটি সমাধান করতে পেরেছি।


7

"ক্লাসের একই নাম ব্যতিক্রমের দুটি বৈশিষ্ট্য রয়েছে" যখন আপনার কাছে সর্বজনীন অ্যাক্সেস স্তর সহ ক্লাসের সদস্য এক্স এবং একই সদস্যের জন্য একজন গেটর / সেটার হয়ে উঠতে পারে।

থাম্বের জাভা বিধি হিসাবে, এটি সর্বজনীন ব্যবহার করার পরামর্শ দেওয়া হয় না গেটর এবং সেটারগুলির সাথে একসাথে অ্যাক্সেস স্তর ।

আরও বিশদে এটি পরীক্ষা করুন: সরকারী সম্পত্তি ভিএস প্রাপ্তির সাথে ব্যক্তিগত সম্পত্তি?

এটি ঠিক করতে:

  1. আপনার সদস্যের অ্যাক্সেসের স্তরটি ব্যক্তিগতকে পরিবর্তন করুন এবং আপনার গিটার / সেটারটি রাখুন
  2. সদস্যের গেটর এবং সেটারটি সরান

6

এ দুটি বিষয় যা জ্যাকএক্সবি খুঁজছে।

public java.util.List testjaxp.ModeleREP.getTimeSeries()  

এবং

protected java.util.List testjaxp.ModeleREP.timeSeries

নীচে উল্লিখিত মত পান পদ্ধতিতে জ্যাকএক্সবি টীকা ব্যবহার করে এড়ানো যায়।

@XmlElement(name="TimeSeries"))  
public java.util.List testjaxp.ModeleREP.getTimeSeries()

5

আপনি যে ক্লাসে এক্সএমএল রূপান্তর করতে চান তাতে কেবল সদস্য ভেরিয়েবলগুলিকে ব্যক্তিগত হিসাবে ঘোষণা করুন। শুভ কোডিং


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

4

আমি একই সমস্যার মুখোমুখি, আমি যোগ

@XmlRootElement(name="yourRootElementName")

@XmlAccessorType(XmlAccessType.FIELD)

এবং এখন এটি কাজ করছে।


3

যখন আপনি আপনার টীকাগুলি উত্সর্গকারীদের সামনে রাখবেন এবং সুরক্ষিত গুণাবলী থেকে এটি সরিয়ে ফেলবেন তখন এটি কাজ করবে:

protected String codingScheme;

@XmlAttribute(name = "codingScheme")
public String getCodingScheme() {
    return this.codingScheme;
}

আমিও একই সমস্যায় পড়ছি। আমিও পর্যবেক্ষণ করেছি যে যখন টীকাগুলি চিহ্নিত করা হয় তখন আমি এটিকে দেখি। এর অর্থ কি সর্বদা এটি প্রাপ্তদের সামনে রাখা উচিত?
পবন দিত্তকাবি

@ পাভান হ্যাঁ আমিও তাই মনে করি। অন্যথায়, এটি আপনার চেয়ে আমার একই সমস্যা সৃষ্টি করে
লিলিয়া

2

আমি সবেমাত্র এই সমস্যাটি চালিয়েছি এবং এটি সমাধান করেছি।

সমস্যার উত্স হ'ল আপনার উভয়ই এক্সএমএলএকসেসটাইপ.এফআইএলডি এবং জোড় এবং সেটটারের জোড়া pairs সমাধানটি হ'ল সেটারগুলি সরানো এবং একটি ডিফল্ট কন্সট্রাক্টর এবং একটি নির্মাণকারী যা সমস্ত ক্ষেত্র গ্রহণ করে add


আমার একই ত্রুটি ছিল এবং আপনি যে টিকাটি দিয়েছিলেন তা এটি সমাধান করেছে, ধন্যবাদ!
গির্জ্যাব্রাহাম

1

আমার নীচে স্বাক্ষর সহ একটি পরিষেবা শ্রেণি ছিল "

@WebMethod
public FetchIQAStatusResponseVO fetchIQAStatus(FetchIQAStatusRequest fetchIQAStatusRequest) {

দৌড়ানোর সময় আমি FetchIQAStatusResponseVOক্ষেত্রগুলির জন্য একই ত্রুটি পেয়েছি । আমি সবেমাত্র উপরে একটি লাইন যুক্ত করেছি FetchIQAStatusResponseVO:

@XmlAccessorType(XmlAccessType.FIELD) //This line added
public class FetchIQAStatusResponseVO {

এবং এটি সমস্যার সমাধান করেছে।



0

সাথে টীকা @XmlTransientটানতে এই সমস্যার সমাধান হয়

@XmlTransient
public void setTimeSeries(List<TimeSeries> timeSeries) {
   this.timeSeries = timeSeries;
}

এ লুক http://docs.oracle.com/javase/8/docs/api/javax/xml/bind/annotation/XmlTransient.html আরো বিস্তারিত জানার জন্য


1
আমি মনে করি এটি একটি সমাধানের চেয়ে বেশি হ্যাক। এটি জ্যাক্সবকে এই একই জিনিস তা সচেতন করার পরিবর্তে পদ্ধতিটিকে উপেক্ষা করতে বলে।
হ্যান্স ওয়াউটারস

কোনও বাগের সংক্ষিপ্ত কিছু হিসাবে বর্ণনা করা যায় না এমন কিছু পাওয়ার জন্য হ্যাক বা না এটিই সেরা সমাধান, আমি @XMLAccessorType (XMLAccessType.FIELD) ব্যবহার করেছি যা বেশিরভাগ উপেক্ষা করা হয়েছিল এবং প্রতিটি সম্পত্তিতে @ এক্সএমএল ট্রান্সিয়েন্ট যুক্ত করার একমাত্র উপায় ছিল এই সমস্যাটি মেরামত করুন। ধন্যবাদ!
রাল্ফ রাইটোক

0

এই সমস্যাটি সমাধানের একটি দ্রুত এবং সহজ উপায় হ'ল @XmlElement(name="TimeSeries")ভেরিয়েবল ডিক্লেয়ারেশন স্টেটমেন্টের protected List<TimeSeries> timeSeries;শীর্ষ থেকে তার প্রাপ্তির শীর্ষে, মুছে ফেলা public List<TimeSeries> getTimeSeries()

সুতরাং আপনার ModeleREPক্লাসটি দেখতে পাবেন:

@XmlRootElement(name="ModeleREP", namespace="urn:test:mod_rep.xsd")
public class ModeleREP {


  protected List<TimeSeries> timeSeries;

  @XmlElement(name="TimeSeries")
  public List<TimeSeries> getTimeSeries() {
    if (this.timeSeries == null) {
      this.timeSeries = new ArrayList<TimeSeries>();
    }
    return this.timeSeries;
  }

  public void setTimeSeries(List<TimeSeries> timeSeries) {
    this.timeSeries = timeSeries;
  }
}

আশা করি এটা সাহায্য করবে!


আপনি 'একটি সহজ উপায়' উল্লেখ করেছেন। কৌতূহলী, এর বাইরেও কি অন্য কোনও উপায় রয়েছে - নয় অন্যান্য টীকা যা লাভ করা যেতে পারে?
পবন দিত্তকাবি

0

আমি ট্রায়াল এবং ত্রুটি করেছিলাম এবং এই সিদ্ধান্তে পৌঁছেছি যে, আপনাকে কেবল দুটি @XMLElementবা উভয়কেই ব্যবহার করতে হবে @XmlAccessorType(XmlAccessType.FIELD)

কখন ব্যবহার করবেন?

কেস 1 : আপনি যদি এক্সএমএল ফাইলে আপনার ক্ষেত্রের নাম এবং উপাদানটির নাম আলাদা করতে চান তবে আপনাকে ব্যবহার করতে হবে @XMLElement(name="elementName")। এটি XML ফাইলে সেই উপাদানটির নামের সাথে প্রদর্শনটি প্রদর্শন করবে।

কেস 2 : এক্সএমএল ক্ষেত্রে যদি ক্ষেত্রের নাম এবং সংশ্লিষ্ট উপাদানটির নাম একই হয় তবে আপনি কেবল ব্যবহার করতে পারেন@XmlAccessorType(XmlAccessType.FIELD)


0

অনেকগুলি সমাধান দেওয়া হয়েছে, এবং ইন্টারনালগুলি সংক্ষেপে @ শ্রীরাম এবং @ptomli দ্বারা স্পর্শ করা হয়েছে। আমি হুডের নীচে কী ঘটছে তা বুঝতে সহায়তা করার জন্য উত্স কোডটিতে কয়েকটি রেফারেন্স যুক্ত করতে চাই।

ডিফল্টরূপে (অর্থাত্ @XmlRootElementমূল শ্রেণীর ব্যতীত কোনও অতিরিক্ত টীকাগুলি ব্যবহৃত হয় না ), জেএবিএক্স দুটি উপায়ে উন্মুক্ত জিনিস মার্শাল করার চেষ্টা করে:

  1. পাবলিক ফিল্ড
  2. সংগ্রহকারী পদ্ধতি যে নামে অনুসরণ করছেন সম্মেলন আর এর সাথে সেটার পদ্ধতি আছে।

লক্ষ্য করুন যে কোনও ক্ষেত্র যদি (বা পদ্ধতিটি ফিরে আসে) null, তবে এটি আউটপুটে লেখা হবে না।

এখন যদি @XmlElementব্যবহৃত হয়, অ-সর্বজনীন জিনিসগুলি (ক্ষেত্র বা গিটার পদ্ধতি হতে পারে) পাশাপাশি মার্শাল করা যেতে পারে।

তবে দুটি উপায়, অর্থাৎ ক্ষেত্র এবং গেটর-পদ্ধতিগুলি অবশ্যই একে অপরের সাথে বিরোধ নয়। অন্যথায় আপনি ব্যতিক্রম পেতে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.