【问题标题】:Passing the <div> data to the servlet (ACE - EDITOR)将 <div> 数据传递给 servlet (ACE - EDITOR)
【发布时间】:2014-02-21 08:47:08
【问题描述】:

我有一个编辑器,其中所有用户输入的文本都输入到一个标签中,现在我想将此数据传递给一个 servlet。我尝试过使用表单,但是 servlet 端的值显示为空。

怎么做?我想把这些数据放到我的 doget() 中。

JSP

<form method="post" name="divdata" action="mygeco" target="_blank" > 
<div id="editor">
User enters some text here
</div></form>

<button type= "button" style="position: absolute; right: 11%; top: 30%;" id="execute" onclick="saveTextAsFile()">Click to execute</button>
<script type='text/javascript'> 
function saveTextAsFile()
{
document.divdata.submit();
}

小服务程序:

String text = request.getParameter("divdata");
System.out.println(text);

PS:我也尝试过通过 url 传递,但这给我带来了更多问题,除了这个 pl 建议是否有其他方法。

window.open('http://XXX.XX.XXX.XXX:7774/FirstServlet/mygeco?mytxt=' + myDivText,'_top','resizable=yes');

【问题讨论】:

  • 什么是问题标题日期或数据。
  • 哎呀!它的数据,更正它!
  • 嘿@Zedai 你的servlt类名是什么。
  • mygeco,对不起,这有什么用吗?
  • 也许,如果您在

标签: java javascript jsp servlets ace-editor


【解决方案1】:

我认为你要做的如下:

1st - 使用 div 声明您的 ACE 编辑器,如下所示:

 <body onload="onloadPage()">

<form method="post" id="divdata" action="mygeco" target="_blank" >
<div id="editor">
User enters some text here
</div>

<textarea id="textArea" ></textarea>
<input type="button" onclick="submitForm()" value="Button"/>
</form>
</body>

第二个 - onloadPage() :

  function onloadPage()
{
    // hide the textArea
    document.getElementById('textArea').style.display = "none";
}

3rd - submitForm() :

function submitForm() {

    var editor = ace.edit("editor");
    var code = editor.getSession().getValue();
    document.getElementById('textArea').style.display = "block";
    document.getElementById('textArea').value=code;

    document.getElementById("divdata").submit();
}

4th - 获取 servlet 中的值:

String textArea=request.getParameter("textArea");

请给我反馈。

希望对您有所帮助。

【讨论】:

  • 太棒了!非常感谢!
  • 您可以省略显示并隐藏部分文本区域,始终隐藏它。使用隐藏的输入类型而不是文本区域可能更有意义。您只需要在提交时传递值。
【解决方案2】:

表单数据是从input type="text"input type="password" 等输入字段传递的

表单中没有任何 inout 字段

其次,当您编写 request.getParameter() 时,您会尝试从 name 属性而不是 id 获取

【讨论】:

  • 好吧,那是完全不可能的吗?
  • request.getParameter("name"); 也适用于属性name 而不是id。使用文本区域。
  • @Zedai 打错字了
  • 字符串文本 = request.getParameter("divdata"); - 这是正确的,我错误地输入了 String text = request.getParameter("editor");
  • @Zedai你要提交所有写在div标签中的内容吗?
【解决方案3】:

&lt;div&gt; 不是&lt;form&gt; 标签,因此它不是由提交函数发送的。您可以在此处找到所有 HTML 表单标签:http://www.w3schools.com/html/html_forms.asp

您的问题的可能解决方案:

将您的表单更改为:

<form method="post" name="divdata" action="mygeco" target="_blank" > 
  <input type="text" name="editor" value="User enters some text here">
</form>

重要的是来自input 元素的name 属性,您可以在request.getParameter(arg) 函数中使用它。

【讨论】:

    【解决方案4】:

    我不确定你在问什么。用户如何在没有任何输入控件的情况下在 div 中输入值。当用户将值输入 div 时,您可以使用一些隐藏字段来存储日期值。将隐藏字段保留在表单内。因此,您可以轻松地从表单中获取价值。像这样,

    <form method="post" name="divdata" action="mygeco" target="_blank" > 
     <div id="editor">
       User enters some text here
     </div>
      <input type="hidden" name="hiddenDate" id="hiddenDate" >
    </form>
    

    在您的 javascript 中,您可以获取 div 中可用的文本。像这样,

    <script type='text/javascript'> 
        $("#hiddenDate").val($("#editor").html());
    </script>
    

    终于在你的 servlet 中,

    String text = request.getParameter("hiddenDate");
    System.out.println(text);
    

    希望这会有所帮助。

    【讨论】:

    • 这是一个 ACE 编辑器兄弟
    • 嗯,我不知道。无论如何,您可以使用上面的解决方案。
    【解决方案5】:

    有很多方法可以将数据从 jsp 传递到 servlet。我更喜欢通过 jQuery.getJson() 传递数据:http://api.jquery.com/jquery.getjson/

    这是一个例子:

    $.getJSON(YourServlet, {
            param: paramvalue,
            param:{
               param : value,
               param : value
            }
        }, function(json){
               //response callback
    }
    

    【讨论】:

    • 那么我可以使用 jq 在我的
      中传递数据吗?
    • 当然可以,例如可以在ul li标签中定义一个onclick方法
    【解决方案6】:

    request.getParamater() 可用于通过使用name 而不是id 获取数据,您需要将其转换或分配给具有名称的其他字段,或者它可能是在表单提交之前动态创建的HTML元素JS

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签