Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从wicket组件获取HTML属性?_Wicket - Fatal编程技术网

如何从wicket组件获取HTML属性?

如何从wicket组件获取HTML属性?,wicket,Wicket,我找不到允许我从组件中提取属性的方法,或者更好的方法,从一个特定属性中提取属性。以下是一个例子: 我有两个文本区域(组件) 两者都是可扩展的 在输入第一个时,它会使用Ajax自动扩展,并且高度会增加 我从第一个文本区域获取高度属性 我将第二个文本区域的高度设置为第一个文本区域的高度 public class HomePage extends WebPage { TextArea t = new TextArea("m", "hey");; TextArea t2 = new TextAr

我找不到允许我从组件中提取属性的方法,或者更好的方法,从一个特定属性中提取属性。以下是一个例子:

  • 我有两个文本区域(组件)
  • 两者都是可扩展的
  • 在输入第一个时,它会使用Ajax自动扩展,并且高度会增加
  • 我从第一个文本区域获取高度属性
  • 我将第二个文本区域的高度设置为第一个文本区域的高度

     public class HomePage extends WebPage {
    
     TextArea t = new TextArea("m", "hey");;
    
    TextArea t2 = new TextArea("m2",
        "this is a label with label ones attributes added");
    
    public HomePage() {
    
    add(t.add(new AttributeModifier("height", "100;")));
    
    
    add(t2.add(HERE ADD THE ATTRIBUE HEIGHT FROM LABEL);
    
    }
    

  • 我的解决方案使用JavaScript进行高度修改。t1是一个通过键入正在增长的值,t2是一个高度正在调整的值。我觉得干净漂亮

    private TextArea textarea1() {
        TextArea t1 = new TextArea("t1", Model.of("t1"));
        final String js = "document.getElementById('%s').style.height = document.getElementById('%s').style.height;";
        t1.add(new OnChangeAjaxBehavior() {
    
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                target.appendJavaScript(String.format(js, textarea2.getMarkupId(), textarea1.getMarkupId()));
            }
        });
        t1.setOutputMarkupId(true);
        return t1;
    }
    
    private TextArea textarea2() {
        TextArea t2 = new TextArea("t2", Model.of("t2"));
        t2.setOutputMarkupId(true);
        return t2;
    }
    
    在前面的页面/面板类中,声明私有字段并为它们分配两个textarea的

    private Textarea textarea1;
    private Textarea textarea2;
    
    在ctor中:

    textarea1 = textarea1();
    textarea2 = textarea2();
    add(textarea1);
    add(textarea2);
    

    您希望在UI上实现什么?是否要展开第二个
    textarea
    区域,然后第一个区域在键入时变大?因此,我键入第一个区域,高度从100增加到150。我获得最终高度属性(150),并将第二个textarea高度设置为150。如何获得最终高度?通过js还是通过行为?因为如果你只使用js,你可以应用一个jquery脚本来改变第二个textarea的样式,这就是我想要通过属性来获得它,而不是通过一个js脚本来扩展
    ,你使用的是jquery插件还是我在这个问题中告诉过你的类似插件?漂亮,我真的很喜欢你在那里所做的,这让我以一种不同的(更好的)方式思考。我刚刚尝试过这个,但我认为可能遗漏了一些东西。在eclipse中,在更新时textarea2出错,它说我需要创建一个局部变量。所以我不确定textarea2将如何更新?是的,在类私有TextAreaTextArea1,textarea2中声明字段。通常情况下,在StackOverflow上,您并没有准备好复制、粘贴和编译代码,只是想知道应该如何做。它需要在代码中集成一些工作。