0

下面的jsp显示从webservice返回的HashMap值

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@page import="com.action.AuraDecisionWorsheetDetailsService"%>
<%@page import="com.action.AuraDecisionWorsheetDetailsServiceLocator"%>

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<form name="form1" method="post" action='gawd.jsp'>
<center><h1>DETAILS</h1></center>

<%
    try{
        AuraDecisionWorsheetDetailsService psi = new AuraDecisionWorsheetDetailsServiceLocator();

        com.action.AuraDecisionWorsheetDetails ps = psi.getAuraDecisionWorsheetDetails();

    if(request.getParameter("PolId")!=null){ 

        String pol_id=request.getParameter("PolId");


    %>
        <center><b>RESULT :</b> <%= ps.service(pol_id)%></center>
    <% }else
        {%>

    <TABLE align="center">
    <TR>
        <TD>ENTER POLICY NUMBER</TD>
        <TD><input type="text" name= "PolId"  /></TD>
    </TR>
    <TR>
        <TD colspan="2" align="center">&nbsp;</TD>
    </TR>
    <TR>
        <TD colspan="2" align="center"><input type="submit" value="Submit"></TD>
    </TR>


    </TABLE>    
    <% } 
    }catch(Exception exe)
    {
        exe.printStackTrace();
    }
    %>

</form>

</BODY>
</HTML>

收到以下异常

faultString: java.io.IOException: No serializer found for class com.solcorp.pathfinder.uidefs.UIElement in registry org.apache.axis.encoding.TypeMappingDelegate@c87621

Caused by: java.io.IOException: No serializer found for class com.solcorp.pathfinder.uidefs.UIElement in registry org.apache.axis.encoding.TypeMappingDelegate@c87621

Web 服务接受一个参数,即 pol_id 并返回 HashMap。它是使用 Apache Axis 创建的。

4

1 回答 1

2

您在这段代码中有很多问题:

  1. 从 jsp 调用 web 服务是一种不好的做法,您应该在 servlet 中进行。jsp 应该主要关注表示而不是逻辑。尝试使用jstl
  2. 你正在做alert(pol_id);没有打开任何脚本标签。alert是一个 javascript 函数,必须包含在<script></script>.
  3. 你有这一行:<TD><input type="text" name= "PolId" %></TD>,它显然应该是:(<input type="text" name= "PolId" /></TD>请注意,我%在末尾更改为/.
  4. 在这一行:<%= ps.service(pol_id)%>;最后失踪了。
  5. 你有这个条件:

    `if(request.getParameter("PolId")!=null){ 
         String pol_id=request.getParameter("PolId")==null?"":request.getParameter("PolId");}`
    

    您正在执行两次相同的检查,删除 if 或三元运算符。

解决这些问题(第一个实际上是最佳实践,因此您现在可以跳过它),然后如果您有更多问题,请返回并发布您的问题。

编辑: 在您的代码中,您正在从服务中获取结果:

`<center><b>RESULT :</b> <%= ps.service(pol_id)%></center>`

但正如你提到的它是一个哈希图,所以我认为你不能直接回应它。您需要回显从中提取的值,因此请尝试执行以下操作进行测试:

//in the java snippet
Map map = ps.service(pol_id);
 ...
//in the html
<center><b>RESULT :</b> <%= map.get(0)%></center>
于 2012-08-01T08:25:31.097 回答