【问题标题】:POST to Java from Wordpress从 Wordpress 发布到 Java
【发布时间】:2010-12-09 08:22:12
【问题描述】:

我的页面以前都是以 Wicket 作为前端的 Java。现在,我有一个带有登录表单的 wordpress 起始页。当我在该登录表单中输入电子邮件和密码时,我想将其重定向到登录服务,然后如果登录成功,该服务会将用户重定向到检票口欢迎页面。

我尝试这样做的方法是从 wordpress 页面发送 POST 消息,并在我的 java 应用程序中使用 Service 处理它。这对我来说效果不佳。

这甚至是一个好方法吗?如果不是,还有其他可能的方法吗?

这是我今天尝试的实现:

(从顶部的wordpress页面模拟post-action)

<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;
  }
 }

应用上下文:

 <!-- 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

我用 @Path("/Login") 注释 LoginServiceImpl 可能不是正确的方法? 如何将 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>

【问题讨论】:

  • 为什么要使用 wordpress 起始页? Wicket 应该足以支持您的欢迎屏幕。
  • 这是一个我无法控制的业务需求......我同意这是愚蠢的。

标签: java wordpress post jakarta-ee wicket


【解决方案1】:

似乎问题出在您的配置中,而不是思维过程本身。

在 applicationContext 中声明一个 id 为 loginServiceBean 的 bean。

编辑:

我并不完全熟悉您使用的技术,但 @Consumes("application/xml")-annotation 是否会阻止请求?您可以尝试将@Consumes("application/x-www-form-urlencoded")-annotation 添加到您的方法中,该方法应该处理登录数据。

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

编辑^2:

您的表单操作是http://localhost:8080/Login。如果我理解正确应该是http://localhost:8080/Login/login

【讨论】:

  • 非常感谢,这帮助我克服了 applicationContext-error。我更新了我的帖子。最大的问题是如何让服务与 java 代码对话,而这似乎是我遇到的难题。
  • 我尝试使用 @Consumes("application/x-www-form-urlencoded") 但它产生了相同的 404 错误。我还尝试一起删除 @Consumes 注释,也收到相同的 404 错误。
  • 我尝试将 localhost:8080/Login/login 添加到我的表单操作中,但错误仍然存​​在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2011-12-13
相关资源
最近更新 更多