Spring MVC:如何给 <form:textarea /> 标签一个默认值?



我有一个给<form:textarea />标签默认值的问题。
当我创建如下JSP文件时:

<form:textarea path="Content" id="my-text-box" />${content}

JSP解析器将上面的行翻译为:

<textarea id="my-text-box" name="Content"></textarea>third hello world!

同样,给出value属性也不起作用。

<form:textarea value="${content}" path="Content" id="my-text-box" />

JSP作为HTML输出给我:

<textarea id="my-text-box" name="Content" value="third hello world!"></textarea>

您可以看到<textarea>标签没有value属性。

如何将默认值传递给<form:textarea>标签?

Spring表单标签用于数据绑定(例如,您的模型属性通过表单的path属性绑定到表单)。如果需要指定默认值,那么在ModelYouArePassingToView到达视图之前,将控制器中的Content属性设置为所需的默认值。

如果你使用Spring MVC和@RequestMapping,一个很好的地方在你的控制器将是你的@ModelAttribute方法。例如:

@ModelAttribute("modelYouArePassingToView")
public ModelYouArePassingToView createDefault() {
   //construct it with default values for "Content" 
   //attribute, and it will show up in textarea after the bindind
   ModelYouArePassingToView myapv = new ModelYouArePassingToView(); 
   myapv.setContent(..); //default value
   return myapv;
}

在表单中,确保包含modelAttribute标签属性:

<form:form modelAttribute="modelYouArePassingToView" ...>
  <form:textarea path="content" ..> 

我也遇到过类似的情况。下面的代码:

<form:textarea path="Content" id="my-text-box">${content}</form:textarea>

这适用于Spring 4,其中form:textarea标签必须为空:

<form:textarea path="content" value="${Object.content}"/>

您必须使用JS以及Spring MVC来完成此工作。我是这样做的:

  1. 将textarea改为basic html,如下所示:

     <textarea id="myTextArea" onchange="here();">${content}</textarea>
      OR
     <textarea id="myTextArea" onchange="here();">third hello world!</textarea>
    
  2. 添加一个隐藏的输入字段,使用spring mvc:

    <form:input type="hidden" id="content" path="Content" value="third hello world!"/>
    
  3. 添加以下JavaScript:

    <script>
      var text1 = document.getElementById('myTextArea').value;
      function here() {
         text1 = document.getElementById('myTextArea').value;
         document.getElementById("content").value = text1;
      }
    </script>
    

也许你可以使用占位符。

            <form:textarea
                            id="id"
                            class="class"
                            path="path"
                            placeholder="test"/>

您也可以在模型中设置默认文本。您的jsp将包含:

<form:textarea path="my-text-box" rows="20" cols="100" cssClass="rounded"/>

然后在Model中,你会有:

private static final String DEFAULT_textareacontent = "Hello World";
private String my-text-box = DEFAULT_textareacontent;

不确定这是否是最佳实践,但它似乎对我有效。

您可以使用jquery获取模型属性值并在textarea

中设置该值
 $( function() {
         var example = parseInt('${example}');       
         $("#bot").val(example); 
    } );

相关内容

  • 没有找到相关文章

最新更新