привязка одного тега формы sf: input spring с несколькими атрибутами bean

Я хочу создать форму с использованием пружинных тегов, чтобы пользователь мог войти в систему со своей электронной почтой или номером мобильного телефона или именем пользователя и паролем.

<sf:form method="POST" modelAttribute="loginBean">
    <label for="user_email">User Name/Email/Mobile:</label>
    <sf:input path="email,mobile,username" value="${user.email}" />

    <label for="user_password">Password:</label>
    <sf:input path="password" />

    <input type="submit" value="submit" />
</sf:form>

ЛогинБин

public class LoginBean {
private String email;
private String password;
private String mobile;
private String username;
//getter setter 
}

Я застрял здесь, чтобы связать один входной тег с несколькими атрибутами bean.

Пожалуйста, помогите мне.


person kartikag01    schedule 05.03.2015    source источник


Ответы (1)


Подходов могло быть 2:

  1. Используйте одно поле String login в LoginBean и одно поле формы с путем login. На стороне сервера вы должны каким-то образом распознать, что введено, и сделать 3 попытки входа в систему в зависимости от распознанного пути.

-

tryLoginWithEmail(loginBeanInstance.getLogin(), loginBeanInstance.getPassoword()); 
tryLoginWithMobile(loginBeanInstance.getLogin(), loginBeanInstance.getPassoword());
tryLoginWithUsername(loginBeanInstance.getLogin(), loginBeanInstance.getPassoword());
  1. Создайте 3 поля формы и добавьте некоторую логику, чтобы разрешить заполнение только одного поля. Логин по непустому полю.

ОБНОВИТЬ:

  1. Создайте один метод tryComplexLogin (логин, пароль), где вы можете попытаться найти пользователя с паролем и логином, проверив все 3 значения полей в БД.

нравится

select * from users
where
  (name =:loginNameParam and password=:passwordParam)
OR
  (email =:loginNameParam and password=:passwordParam)
OR
  (mobile =:loginNameParam and password=:passwordParam)
person StanislavL    schedule 05.03.2015
comment
спасибо за Ваш ответ. первый выглядит вполне прилично. пожалуйста, скажите мне во втором методе, т.е. создайте 3 поля формы, тогда все будут видны пользователю или только одно. - person kartikag01; 05.03.2015
comment
Это зависит от ваших требований. Это могут быть радиокнопки, чтобы выбрать, какое поле использовать. Или все 3 поля и 2 отключаются при заполнении одного. - person StanislavL; 05.03.2015