Java:如何将值从javascript设置为wicket组件文本字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:如何将值从javascript设置为wicket组件文本字段相关的知识,希望对你有一定的参考价值。

我使用javascript从客户端使用未绑定到wicket组件的按钮获取值(即,它没有wicket-id)。现在,我需要将该值设置为textfield(textarea) - 这是一个wicket组件,但无法做到这一点。如果我在一个简单的textarea(不是wicket组件)中设置值,那么它工作正常。但我需要在wicket组件中使用该值,以便在表单提交时获取其值。

Javascript不适用于wicket组件。

Javascript方法:

var text2 = document.getElementById("e2");
var text1 = document.getElementById("e1");
text1.value = "hello";
text2.value = "hello";

html

<wicket:panel>
<form wicket:id="form" id="form" onsubmit="submit(event,this);">
<div wicket:id="myPanel">

   <input type="button" value="Verify" name="B3" onclick=GetTemplate() />

   <p><textarea name="S2" id="e2"></textarea></p>

   <p><textarea wicket:id="e1" name="S1" id="e1" ></textarea></p>

   <input type="submit" class="submitForm" wicket:id="submit" wicket:message="value:Submit" name="submit" />

</div>
</form>
</wicket:panel>

Java的:

public class MyPanel  extends Panel {
 public MyPanel(...){
   ...
   Form<?> form = new Form("form", new Model());
   container = new WebMarkupContainer("myPanel");

   textArea = new TextArea<String>("e1", new Model());
   textArea.setEnabled(true).setOutputMarkupId(true).
   textArea.setOutputMarkupPlaceholderTag(true);
   textArea.setEscapeModelStrings(false);
   textArea.add(new ErrorIndicator());

   submitButton = (Button) new Button("submit") {
            private static final long serialVersionUID = 1L;

            @Override
            public void onSubmit() {
                message = textArea.getModelObject();
            }
        }.setEnabled(true);
   container.add(textArea);
   container.add(submitButton);
   form.add(container);
   add(form);
 }

在这里,我可以在textarea id = e2中设置值,但不能在id = e1上设置值。

答案

问题来自这条线:

 textArea.setEnabled(true).setOutputMarkupId(true)

这将为TEXTAREA(针对Wicket Ajax)生成自定义ID。因此,id已更改,您的javascript将不再起作用,因为它使用被替换的'e1'id。

您可以添加自定义数据属性并按该属性获取组件。

例如:

 <p><textarea wicket:id="e1" name="S1" data-id="e1" ></textarea></p>

然后(例如,使用jquery,类似这样)

  $("TEXTAREA[data-id='e1']").val("hello");

或者,如果您不需要ajax,请跳过调用setOutputMarkupId

以上是关于Java:如何将值从javascript设置为wicket组件文本字段的主要内容,如果未能解决你的问题,请参考以下文章

将值从 NSString 设置为 html webview 中的变量

如何将值从javascript变量传递给剃刀变量?

如何将值从 javascript 函数传递到 django 视图

如何正确地将值从 pyqt 返回到 JavaScript?

如何将值从 javascript 传递到 iOS UIWebView

如何使用 <c:set> 将值从 <security:authentication/> 设置为参数