有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Java或wicket更改标签的HTML输入类型

我想知道如何将密码字段的输入类型从“Password”更改为“text”,从而使密码不再显示为星号。我在项目中使用Java和wicket

<div class="loginPassword">
    <label for="password"><wicket:message key="login.password"/></label>
    <input class="ft_login_password" wicket:id="password" type="password" name="password" />
</div>

密码字段在我的Java代码中设置为PasswordTextField:

import org.apache.wicket.markup.html.form.PasswordTextField;
PasswordTextField passwordField = new PasswordTextField("password");

共 (1) 个答案

  1. # 1 楼答案

    正如评论中所解释的,您应该在客户端使用JavaScript来实现这一点

    1. 在服务器上请求Ajax进行更改是没有意义的

    2. Wicket会抱怨PasswordTextField期望type属性为password:https://github.com/apache/wicket/blob/837f3c137bf39f26ddc3b8e939235cde04e8c13d/wicket-core/src/main/java/org/apache/wicket/markup/html/form/PasswordTextField.java#L115

    如果坚持用Java实现,那么必须重写PasswordTextField#getInputTypes()以返回new String[] {"password", "text"}

    使用Wicket/Java,您应该执行以下操作:

    passwordField = new PasswordTextField(...);
    passwordField.setOutputMarkupId(true);
    
    new AjaxLink<Void>("passwordToText") {
      @Override public void onClick(AjaxRequestTarget target) {
        passwordField.add(AttributeModifier.replace("type", "text"));
        target.add(passwordField);
      }
    }