মডেলএট্রিবিউট এবং কমান্ডনামের মধ্যে পার্থক্য বসন্তের ফর্ম ট্যাগে?


92

স্প্রিং 3 এ, আমি জেএসপিতে ফর্ম ট্যাগে দুটি ভিন্ন বৈশিষ্ট্য দেখেছি

<form:form method="post" modelAttribute="login">

এর মধ্যে অ্যাট্রিবিউট মডেলঅ্যাট্রিবিউট হ'ল ফর্ম অবজেক্টের নাম, যার বৈশিষ্ট্যগুলি ফর্মটি জনপ্রিয় করতে ব্যবহৃত হয়। এবং আমি এটি একটি ফর্ম পোস্ট করতে এবং নিয়ামক হিসাবে আমি @ModelAttributeমান ক্যাপচার, বৈধকারীর কলিং, ব্যবসায়ের যুক্তি প্রয়োগ করতে ব্যবহার করেছি । এখানে সবকিছু ঠিক আছে। এখন

<form:form method="post" commandName="login">

এই বৈশিষ্ট্যটি দ্বারা কী প্রত্যাশা করা হয়, এটি কি এমন একটি ফর্ম অবজেক্ট যা এর বৈশিষ্ট্যগুলি আমরা জনবসতি করতে যাচ্ছি?

উত্তর:


127

আপনি যদি (4.3.x) এর উত্স কোডটি FormTagদেখেন যা আপনার <form>উপাদানটিকে সমর্থন করে , আপনি এটি লক্ষ্য করবেন

/**
 * Set the name of the form attribute in the model.
 * <p>May be a runtime expression.
 */
public void setModelAttribute(String modelAttribute) {
    this.modelAttribute = modelAttribute;
}

/**
 * Get the name of the form attribute in the model.
 */
protected String getModelAttribute() {
    return this.modelAttribute;
}

/**
 * Set the name of the form attribute in the model.
 * <p>May be a runtime expression.
 * @see #setModelAttribute
 */
public void setCommandName(String commandName) {
    this.modelAttribute = commandName;
}

/**
 * Get the name of the form attribute in the model.
 * @see #getModelAttribute
 */
protected String getCommandName() {
    return this.modelAttribute;
}

তারা উভয়ই একই ক্ষেত্রের কথা উল্লেখ করছে, এভাবে একই প্রভাব রয়েছে।

তবে, ক্ষেত্রের নামটি যেমন ইঙ্গিত করে modelAttribute, তেমন পছন্দ করা উচিত, যেমন অন্যরাও নির্দেশ করেছেন।


4
ভাল! আপনি কীভাবে ট্যাগ থেকে সম্পর্কিত ক্লাসটির নামটি আবিষ্কার করলেন?
সংঘুন লি লি

11
@ সাংডল প্রচলিতভাবে, ক্লাসটি সবেমাত্র বলা হয় <tag-name>Tag। পুরোপুরি যোগ্যতাসম্পন্ন শ্রেণীর নামের জন্য, এই ক্ষেত্রে .jarট্যাগযুক্ত লাইব্রেরি ( ) খুলুন spring-web। অধীনে META-INF, আপনি খুঁজে পাবেন spring-form.tld। এটা একটা আছে <tag>জন্য এন্ট্রি formএকটি সঙ্গে <tag-class>এর org.springframework.web.servlet.tags.form.FormTag
সোটিরিওস ডেলিমানলিস

18

পুরানো উপায় = কমান্ডনাম

...
<spring:url value="/manage/add.do" var="action" />
    <form:form action="${action}" commandName="employee">
        <div>
            <table>
....

নতুন উপায় = মডেলঅ্যাট্রিবিউট

..
<spring:url value="/manage/add.do" var="action" />
    <form:form action="${action}" modelAttribute="employee">
        <div>
            <table>
..

13

কিছুক্ষণ আগে আমার একই প্রশ্ন ছিল, আমি সঠিক পার্থক্যগুলি মনে করতে পারি না তবে গবেষণা থেকে আমি নির্ধারণ করেছিলাম যে commandNameএটি করার পুরানো উপায় এবং নতুন অ্যাপ্লিকেশনগুলিতে আপনার ব্যবহার করা উচিতmodelAttribute


1

কমান্ডনাম = অনুরোধ স্কোপ বা সেশনের সুযোগের একটি পরিবর্তকের নাম যা এই ফর্ম সম্পর্কে তথ্য ধারণ করে, বা এটি এই দর্শনটির জন্য মডেল। টিটি একটি হওয়া উচিত।


-3

এক্সএমএল ভিত্তিক কনফিগারেশনে, আমরা কন্ট্রোলার এবং দর্শনগুলির মধ্যে কোনও বিষয় পাস করার জন্য কমান্ড ক্লাস ব্যবহার করব। এখন টীকাতে আমরা ব্যবহার করছি modelattribute

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