Java 使用“事件”获取输入数据;“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

当事件“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 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”时,如何克服此问题吗反馈面板错误消息?最简单的解决方案是将验证移到表单级验证程序中。仅在提交完整表单时运行,但不在更新单个字段时运行。