Java 使用“事件”获取输入数据;“onkeyup”;
当事件“onkeyup”被触发时,我在获取输入数据方面有一个小问题。我有这样的输入和其他数据:Java 使用“事件”获取输入数据;“onkeyup”;,java,wicket,Java,Wicket,当事件“onkeyup”被触发时,我在获取输入数据方面有一个小问题。我有这样的输入和其他数据: // El-cheapo model for form private static final ValueMap cheapModel = new ValueMap(); //some code... //... Form form = new Form( "pushNotificationForm" ); form.setOutputMarkupId( true ); final Label
// El-cheapo model for form
private static final ValueMap cheapModel = new ValueMap();
//some code...
//...
Form form = new Form( "pushNotificationForm" );
form.setOutputMarkupId( true );
final Label actualSizeLabel = new Label( ACTUAL_NOTIFICATION_SIZE_ID, new Model<String>( actualSize ) );
actualSizeLabel.setOutputMarkupId( true );
final TextField<String> titleTextField = new TextField<String>( TITLE_TEXTFIELD_ID, new PropertyModel<String>(
cheapModel, TITLE_TEXTFIELD_ID ) );
titleTextField.setRequired( true );
titleTextField.add( new AjaxEventBehavior( "onkeyup" )
{
@Override
protected void onEvent( AjaxRequestTarget ajaxRequestTarget )
{
actualSize = Integer.toString( (getTitle() ).getBytes().length );
ajaxRequestTarget.add( actualSizeLabel );
}
} );
form.add( titleTextField );
form.add( actualSizeLabel );
//.. some code
//later
private String getTitle()
{
return cheapModel.getString( TITLE_TEXTFIELD_ID );
}
//表单的El cheapo模型
私有静态最终值映射cheapModel=新值映射();
//一些代码。。。
//...
表单=新表单(“推送通知表单”);
form.setOutputMarkupId(true);
最终标签actualSizeLabel=新标签(实际通知尺寸ID,新型号(actualSize));
actualSizeLabel.setOutputMarkupId(真);
最终文本字段titleTextField=新文本字段(TITLE\u TextField\u ID,新属性模型(
cheapModel,TITLE_TEXTFIELD_ID));
titleTextField.setRequired(true);
添加(新的AjaxEventBehavior(“onkeyup”)
{
@凌驾
受保护的void OneEvent(AjaxRequestTarget AjaxRequestTarget)
{
actualSize=Integer.toString((getTitle()).getBytes().length);
ajaxRequestTarget.add(actualSizeLabel);
}
} );
添加表格(titleTextField);
添加表格(实际标签);
//.. 一些代码
//后来
私有字符串getTitle()
{
返回cheapModel.getString(TITLE\u TEXTFIELD\u ID);
}
在我提交表单之前,actualSize仍然为空,但为什么?请提供任何帮助,因为表单处理(以及随后将值写入模型)将仅在您提交时完成,而不是在来自某些组件的任何ajax回调时完成 我认为,您可以尝试从文本字段获取原始值:
String currentValue = titleTextField.getRawInput();
你需要。但是,由于您的行为与onkeyup事件相关,您可能还想使用。因为您不提交数据。这就是解决方案:)您知道当需要TextField时,以及当我在字段中键入内容,然后删除时,我会得到“required field”时,如何克服此问题吗反馈面板错误消息?最简单的解决方案是将验证移到表单级验证程序中。仅在提交完整表单时运行,但不在更新单个字段时运行。