Vaadin6 js对TextField问题

code:
TextFiled ukeynoTF= new TextField();
ukeynoTF.setDebugId(“ukeyno”);


getWindow().executeJavascript(
“document.getElementById(‘ukeyno’).value=‘1234567’;”+
“document.getElementById(‘ukeyno’).focus();”
);
这种情况只有当TextField失去焦点后通过JS赋的值才会生效,Vaadin 6.8.4版有没有更好的赋值方法?

你可以试下Refresher Addon.
http://​https://vaadin.com/directory#addon/refresher
, 有支持Vaadin 6的版本

海建哥,谢谢你的回答。

我试试了下不行。
情况是这样的,我现在需要做一个UKey登录,步骤:
1、读取UKEY编号;javascript读取。
2、通过UEKY编号得到数据库中数据后,再对UKEY进行验签(javascaript方法),验签通过后返回密文,这时我需要获取这个密文(不想密文显示出来,所以想通过javascript 对隐藏的文本框赋值,refresher是可以对隐藏的component进行赋值)后,在Java后台发送交易再做一次认证。
class TableRefreshListener implements RefreshListener {

    @SuppressWarnings("unchecked")
    public void refresh(Refresher source) {
        content.setValue("hello");//假如hello是验签通过后得到的密文
    }
}

这时我无法将“hello”(hello 来自js)传到java 方法中。

不好意思,貌似也没什么更好的办法了。可以用javascript先focus 再 blur。

getWindow().executeJavaScript( "document.getElementById('jsvalue').focus(); " + "document.getElementById('jsvalue').value = 'hello'; " + "document.getElementById('jsvalue').blur(); "); 另外那个TextField记得setImmediate(true).

有个例子,可以看下
http://demo.vaadin.com/book-examples/book/#advanced.jsapi.jsreception

这个方法我以前是过了,vaadin这框架真不能乱用。就因这事困扰了很久。其实还有自定义component可以实现,但是我这边代码安全扫描软件会把wedget中的host.html文件作为代码漏洞,所以没用那种。

Vaadin的优势在于Server Side,如果程序里大部分是JS的话,Vaadin确实不是首选。
不光是Vaadin,其他的框架我想也有类似的问题,碰到一个问题,被困扰一下,应该都是很正常的。

谢谢你海建哥,能加你QQ或者邮箱什么的么?

太客气了,有问题大家一起探讨,我邮箱haijian@vaadin.com, QQ我现在不怎么用了,只是偶尔跟家人联系,就不公布了.