POST в Java из Wordpress - PullRequest
       20

POST в Java из Wordpress

0 голосов
/ 09 декабря 2010

Раньше моя страница была полностью java с Wicket в качестве внешнего интерфейса. Теперь у меня есть стартовая страница WordPress с формой входа. Когда я вписываю адрес электронной почты и пароль в эту форму входа в систему, я хочу перенаправить ее в службу входа в систему, которая затем перенаправляет пользователя на страницу приветствия калитки, если вход выполнен успешно.

Я пытался это сделать, отправив сообщение POST со страницы WordPress и обработав его с помощью службы в моем Java-приложении. Это не очень хорошо для меня.

Это даже хороший способ сделать это? Если нет, какие еще способы возможны?

Это реализация, которую я попытался сегодня:

(имитация пост-действия со страницы WordPress сверху)

<FORM action="http://localhost:8080/Login" method="post">
    <P>
    <LABEL for="email">Email: </LABEL>
              <INPUT type="text" id="email"><BR>
    <LABEL for="password">Password: </LABEL>
              <INPUT type="text" id="password"><BR>

    <INPUT type="submit" value="Send"> <INPUT type="reset">
    </P>
 </FORM>

Услуги:

@Path("/Login")
@Consumes("application/xml")
public class LoginServiceImpl implements LoginService{

 private static final Response USER_AUTHORIZATION_FAILED = Response.status(
   Status.NOT_ACCEPTABLE).build();

 private static final Response USER_SUCCESSFULLY_AUTHORIZED = Response.status(
   Status.ACCEPTED).build();

 @Autowired
 private UserController userController;

 @Override
 @POST
 public Response login(@QueryParam("email") String email, 
   @QueryParam("password") String password) {

  boolean authenticated = userController.authenticate(email,
    password);
  User u = userController.findByEmail(email);

  if (u != null && u.getUserType() == UserType.COMPANY_RECRUITER) {
   handleCompanyRecruiter(u);
   return USER_SUCCESSFULLY_AUTHORIZED;
  } 
  else if ((authenticated && u != null) && (u.getCompany().getIsActive())) {
   signInUser(u);
   setCorrectResponsePage(u);
   return USER_SUCCESSFULLY_AUTHORIZED;
  }
  else{
   return USER_AUTHORIZATION_FAILED;
  }
 }

ApplicationContext:

 <!-- LOGIN SERVICE --> 
      <jaxrs:server id="loginService" address="/login">
      <jaxrs:serviceBeans>
       <ref bean="loginServiceBean" />
      </jaxrs:serviceBeans>
      <jaxrs:providers>
       <ref bean="jaxbProvider" />
       <ref bean="notFoundExceptionMapper" />
      </jaxrs:providers>
     </jaxrs:server>

<bean class="services.CandidateServiceImpl"
        id="candidateServiceBean" />

При запуске, когда я вхожу в форму и нажимаю отправить, я получаю эту ошибку:

HTTP ERROR: 404

NOT_FOUND
RequestURI=/Login

Меня, аннотирующего LoginServiceImpl с помощью @Path ("/ Login"), возможно, не так? Как перенаправить POST в правильное местоположение?

А это старая Wicket-страница для входа в систему:

<wicket:panel>
<wicket:extend>       
    <div id="top_login">   
        <form wicket:id="loginForm">  
                <div>
                    <label for="loginEmail" wicket:id="loginEmailLabel">Email</label>
                    <input class="text" id="loginEmail" wicket:id="loginEmail" tabindex="101" />
                </div>
                <div>
                    <label for="loginPassword" wicket:id="loginPasswordLabel">Password</label>
                    <input class="text" type="password" id="loginPassword" wicket:id="loginPassword" tabindex="102" />
                </div>
                <div class="loginBtnArea">
                    <input wicket:id="loginButton" class="submit" type="submit" tabindex="103" value="Login" />

                </div>   
            </form> 
            <a wicket:id="forgotPasswordLink"><span class="forgotPassword" wicket:id="forgotPasswordLabel">Forgot your password?</span></a>                          
    </div>
</wicket:extend>
</wicket:panel>

1 Ответ

1 голос
/ 09 декабря 2010

Кажется, что проблема в вашей конфигурации, а не в самой мыслительной процедуре.

Объявите bean-компонент с идентификатором loginServiceBean в вашем контенте приложения.

EDIT:

Я не совсем знаком с методами, которые вы используете, но может ли аннотация @Consumes("application/xml") блокировать запрос?Вы можете попробовать добавить в свой метод @Consumes("application/x-www-form-urlencoded") -аннотацию, которая должна обрабатывать данные для входа.

Soure: http://docs.sun.com/app/docs/doc/820-4867/ggqqr?a=view

РЕДАКТИРОВАТЬ ^ 2:

Вашформа действия http://localhost:8080/Login.Если я правильно понимаю, это должно быть http://localhost:8080/Login/login

...