Как получить XMLHttpResponse из Java-класса в JS в JSP и проанализировать его

Когда пользователь нажимает на гиперссылку, элементы управления переходят к сценарию, а оттуда - к файлу действия.

showregistrations.jsp

<s:iterator value="list">
<table
<td><a href="#" class="userName" id='<s:property value="userName"/>'><s:property value="userName"/></a></td>
</table>
</s:iterator>

JavaScript (это внутри showregistrations.jsp)

<script type="text/javascript">
    $('.userName').click(function(){
        var userName= $(this).attr('id');
        var ajax    = new XMLHttpRequest();
        ajax.open("POST","getUserDetails",false);
        ajax.send(userName);
    });
</script>

struts.xml

<action name="getUserDetails" class="com.ActionClasses.GetUserDetailsAction">
    <result name="success"  type="tiles">showUserDetails</result>
</action>

GetUserDetailsAction.java возвращает "успех".

tiles.xml

<definition name="showUserDetails" extends="home">
    <put-attribute name="Title" value="User Details"/>
    <put-attribute name="Menu"  value="/mainMenu.jsp"/>
    <put-attribute name="Body"  value="/showUserDetails.jsp"/>
</definition>

Но это не перенаправление на showUserDetails.jsp

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

Я обнаружил, что контроль приходит к JS, откуда я вызвал действие. Может кто-нибудь сказать мне, как я могу получить ответ от класса GetUserDetailsAction к showregistrations.jsp(отсюда я называю этот файл действия).

Вот мой GetUserDetailsAction.java

HttpServletRequest req=null;

GetUserDetailsBean getUserDetailsBean = new GetUserDetailsBean();
private String userName;


public String execute(){
    System.out.println("came to getuserdetailsaction");
    try {
        InputStream is = req.getInputStream();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        byte[] dataBuffer = new byte[32];
        int dataLength=0;

        while( dataLength >= 0 ) {
            dataLength = is.read(dataBuffer);
            if( dataLength >= 0 ) os.write(dataBuffer, 0, dataLength);
        }

        userName = new String(os.toByteArray(), "UTF-8");

    } catch (IOException e) {
        e.printStackTrace();
    }

    GetUserDetailsDao getUserDetailsDao = new GetUserDetailsDao();
    getUserDetailsDao.getDetails(userName, getUserDetailsBean);
    //getUserDetailsDao.getDetails is filling the details into getUserDetailsBean. How can I send this bean to the JS and print it there.
    System.out.println("returning success from getuserdetails action");
    return SUCCESS;

1 ответ

Для вашей первой части вопроса, т. Е. Для перенаправления на другой JSP, вы можете использовать window.location="actionName.action"; как вы используете распорки и плитки. в противном случае вы можете написать напрямую window.location=something.jsp

Я не знаю, как отправить ответ из класса Java в JSP.

Другие вопросы по тегам