0

我想就如何在 Spring Web 开发中拥有一个自动完成的搜索框向您寻求帮助,但我似乎没有做对?这些是我正在使用的代码。请帮忙,谢谢!

用户角色服务.java

public interface UserRoleService {
    List<UserRole> getUserRole(UserRole userRole) String role;
}

UserRoleServiceImpl.java

public class UserRoleServiceImpl implements UserRoleService {
    private UserRoleDao userRoleDao;

    @Autowired
    UserRoleServiceImpl(UserRoleDao userRoleDao){
        this.userRoleDao = userRoleDao;
    }   
    public List<UserRole> getUserRole(UserRole userRole, String role)throws Exception{
        List<UserRole> userRoleList = userRoleDao.getUserRole(userRoleDao);
        return userRoleList;
    }
}

控制器

@RequestMapping(value = "userRole", method = RequestMethod.GET)
public @ResponseBody
List<UserRole> getUserRole(@RequestParam("term") String role)
        throws Exception{
    List<UserRole> userRoleList = userRoleService.getUserRole(role);
        ArrayList roleList = new ArrayList();
        int count = 0;
        for(UserRole ei : roleList){

            UserRole roleInfo = new UserRole();

            roleInfo.put("empUserRole", ei.getUserRole());  

            roleInfo.put("value", ei.getUserRole());
            roleInfo.put("label", ei.getUserRole());
            roleList.add(roleInfo);
            count++;

            if(count > AUTOCOMPLETE_SIZE){
                break;
        }
    }
    return roleList;
}

用户角色.jsp

<form:form commandName ="userRoleForm" id="userRoleForm">
    <table>
        <tr>
            <td>User Role</td>
            <td><form:input path ="userName" id="empUserRole"/></td>
        </tr>
    </table>
</form:form>

用户角色.js

$("#empUserRole").autocomplete({
    var empRole = {
        source: "userRole",
        select: function(event, ui){
            $("empUserRole").val(ui.item.empUserRole);
        },
    miLength: 4
    };
});
4

1 回答 1

0

这里empRole看起来也应该是可疑的minLength(你错过了 n)。做这样的事情

var userRoles;
        $(function () {
            $("#empUserRole").autocomplete({
                source: function (request, response) {
                    if (typeof userRoles === 'undefined') {
                        $.ajax({
                            type: "GET",
                            url: "use/proper/url/to/userRole",
                            data: {
                              create:false,                                
                            },
                            cache: false,
                            success: function (data) {
                                userRoles = data;
                                response($.ui.autocomplete.filter(userRoles, request.term));
                            },
                            error: function () {
                                alert("Error while retrieving Client list(Connection failed).");
                            }
                        });
                    }
                },
                minLength: 4
            });
        });

它将存储角色userRoles并确保您使用正确的 URL。我在您的代码中看到的内容中缺少 servlet 上下文路径。

于 2015-05-03T03:25:39.177 回答