Java 如何刷新html页面上的特定组件

Java 如何刷新html页面上的特定组件,java,html,Java,Html,我的html页面上有一个事件监听器,因此当一个组件的值更改时,另一个组件将成为必需的。但这只有在更改组件的值、保存页面并重新加载页面时才有效 有没有一种方法可以做到这一点,而不必保存和重新加载整个页面 @EventListener(targets="licensingStatus", events="onchange") public void onLicenseStatusChange(IRequestCycle cycle){ .... } 编辑: 功能可以转向吗 <input jw

我的html页面上有一个事件监听器,因此当一个组件的值更改时,另一个组件将成为必需的。但这只有在更改组件的值、保存页面并重新加载页面时才有效

有没有一种方法可以做到这一点,而不必保存和重新加载整个页面

@EventListener(targets="licensingStatus", events="onchange")
public void onLicenseStatusChange(IRequestCycle cycle){
....
}
编辑:

功能可以转向吗

<input jwcid="licensingApprovalDate@CustomDatePicker"/>

进入这个

<input jwcid="licensingApprovalDate@CustomDatePicker" validators="validators:maxDateToday"/>


您应该使用Ajax实现此功能。

您应该使用Ajax实现此功能。

Ajax。也许值得一看像jQuery这样的框架。

AJAX。可能值得一看像jQuery这样的框架。

如果需要动态生成组件:

最简单的实现是使用
AJAX
。您可以为页面上的任何组件设置侦听器,当发生更改时,进行
AJAX
调用并显示其他组件

其他:

如果组件已经存在,并且最初不可见,只需要使其可见,那么您可以使用此代码

document.getElementById('other-component').style.visibility='visible'; 
在你的听众中

编辑:

如果您只是希望新字段是必需的,那么可以在javascript中为其创建一个检查,以便在您输入submit按钮或其他内容时,检查该字段是否为空,如果为空,则向用户发送消息。大概是这样的:

mystring=document.getElementById('other-component').value; 
if(!mystring.match(/\S/)){
alert ('Empty value is not allowed');
return false;
}else{
 alert ("correct input");
 return true;
}

如果需要动态生成组件:

最简单的实现是使用
AJAX
。您可以为页面上的任何组件设置侦听器,当发生更改时,进行
AJAX
调用并显示其他组件

其他:

如果组件已经存在,并且最初不可见,只需要使其可见,那么您可以使用此代码

document.getElementById('other-component').style.visibility='visible'; 
在你的听众中

编辑:

如果您只是希望新字段是必需的,那么可以在javascript中为其创建一个检查,以便在您输入submit按钮或其他内容时,检查该字段是否为空,如果为空,则向用户发送消息。大概是这样的:

mystring=document.getElementById('other-component').value; 
if(!mystring.match(/\S/)){
alert ('Empty value is not allowed');
return false;
}else{
 alert ("correct input");
 return true;
}

这里一定要使用Javascript。返回数据时,可以在单个元素上使用getElementById进行更新

让这更容易

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
  $("#myDiv").html("New data loaded");
  myGlobalMandatoryField = true;
});

myGlobalMandatoryField
可以在另一个函数中使用,以确保在字段中输入值。

这里一定要使用Javascript。返回数据时,可以在单个元素上使用getElementById进行更新

让这更容易

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
  $("#myDiv").html("New data loaded");
  myGlobalMandatoryField = true;
});

myGlobalMandatoryField
可以在另一个函数中使用,以确保在字段中输入值。

请看,我正在使用tapestry,并且已经使用tapestry问了这个问题,但没有回答,所以我只是想知道,仅使用纯java和HTML是否可以做到这一点。仅使用HTML和java是不可能的。Java将在服务器上运行,HTML将在客户机上运行。HTML本身没有任何脚本功能,但如果您包含Javascript,则无需页面刷新(AJAX)即可与服务器通信或者使用javascript在不影响服务器的情况下侦听/操作html。看,我正在使用tapestry,并且已经使用tapestry问了这个问题,但是没有回答,所以我只是想知道,仅使用纯java和html是否可能,仅使用html和java是不可能的。Java将在服务器上运行,HTML将在客户机上运行。HTML本身没有任何脚本功能,但如果您包含Javascript,则可以在不刷新页面(AJAX)的情况下与服务器通信,或者使用Javascript侦听/操作HTML而不影响服务器。我已经在组件上安装了侦听器,当事件监听器为firedwell时,如果您的其他组件始终在页面上,但隐藏在页面上,那么您只需在监听器中将其可见性设置为true,我就无法更新其他组件。如果其他组件的值根据前面的其他组件发生变化,那么您需要在侦听器中实现一些ajax调用。我是否必须用Java声明该组件才能做到这一点?目前我正在使用组件ID,我想做的是将字段设为必填字段,有没有办法做到这一点?它正在工作,但没有使用tapestry验证器,我的其他组件都是:/但是我只需要使用它。。。还有一个问题,是否有方法使用函数将字段添加到标记(将编辑我的答案以显示示例)我已经在组件上有一个侦听器,当事件侦听器为firedwell时,如果页面上始终有其他组件,我在更新其他组件时遇到问题,但是隐藏,然后您只需要在侦听器中将其可见性设置为true。如果其他组件的值根据前面的其他组件发生变化,那么您需要在侦听器中实现一些ajax调用。我是否必须用Java声明该组件才能做到这一点?目前我正在使用组件ID,我想做的是将字段设为必填字段,有没有办法做到这一点?它正在工作,但没有使用tapestry验证器,我的其他组件都是:/但是我只需要使用它。。。还有一个问题,有没有一种方法可以使用函数将字段添加到标记中(将编辑我的答案以显示示例)