billyJames
(billyJames zhang)
1
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版有没有更好的赋值方法?
Haijian1
(Haijian Wang)
2
billyJames
(billyJames zhang)
3
海建哥,谢谢你的回答。
我试试了下不行。
情况是这样的,我现在需要做一个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 方法中。
Haijian1
(Haijian Wang)
4
不好意思,貌似也没什么更好的办法了。可以用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
billyJames
(billyJames zhang)
5
这个方法我以前是过了,vaadin这框架真不能乱用。就因这事困扰了很久。其实还有自定义component可以实现,但是我这边代码安全扫描软件会把wedget中的host.html文件作为代码漏洞,所以没用那种。
Haijian1
(Haijian Wang)
6
Vaadin的优势在于Server Side,如果程序里大部分是JS的话,Vaadin确实不是首选。
不光是Vaadin,其他的框架我想也有类似的问题,碰到一个问题,被困扰一下,应该都是很正常的。
Haijian1
(Haijian Wang)
8
太客气了,有问题大家一起探讨,我邮箱haijian@vaadin.com, QQ我现在不怎么用了,只是偶尔跟家人联系,就不公布了.