java.io.IOException:没有为类找到序列化程序

时间:2012-08-01 08:01:03

标签: web-services jsp java-ee struts axis

在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创建的。

1 个答案:

答案 0 :(得分:2)

您在此代码中遇到了很多问题:

  1. 从jsp调用webservices是一种不好的做法,你应该在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或三元运算符。

  6. 解决这些问题(第一个问题实际上是一个最佳实践,所以你现在可以跳过它),如果你有更多问题,请回来发布你的问题。

    修改 在您的代码中,您正在从服务中获得结果:

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

    但是如你所说它是一个Hashmap,所以我认为你不能直接回应它。你需要回显从中提取的值,所以试着这样做进行测试:

    //in the java snippet
    Map map = ps.service(pol_id);
     ...
    //in the html
    <center><b>RESULT :</b> <%= map.get(0)%></center>