3

わかりましたので、コンバーターを作成し、それをディスパッチャー xml に追加しました。しかし、それはうまくいきません。コントローラがいつコンバータを使用する必要があるかを知る方法がわかりません。私のjspページでは、複数のチェックボックスをチェックしています。各チェックボックスには、開発者の ID が保持されます。Spring は、これらの ID から一連の開発者を作成する必要があります。コントローラーに何かが欠けているような気がします。以前はエディターでそれを行っていましたが、initbinder メソッドをオーバーライドしていました。コンバーターでそれを行う方法がわかりません。

前もってありがとう、デビッド

最初に、インターフェイスを実装するクラスを作成しました。

public class DeveloperConverter implements Converter<String, Developer> {

    private GameOrganizer gameOrganizer;


    public void setGameOrganizer(GameOrganizer gameOrganizer) {
        this.gameOrganizer = gameOrganizer;
    }



    public Developer convert(String s) {
        long id2 = Long.parseLong(s);
        Developer type = gameOrganizer.getDeveloper(id2);
        return type;
    }
}

次に、Bean をディスパッチャ xml に追加しました。

<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="converters.GameConverter" />
            <bean class="converters.DeveloperConverter" />
        </list>
    </property>
</bean>

そしてコントローラー:

@Controller
@RequestMapping("/AddGame")
public class GameFormController {

    @Autowired
    private GameOrganizer gameOrganizer;
    private DeveloperConverter developerEditor;
    private GameValidator gameValidator;
    private ConversionService service;

    public GameFormController() {
        setGameValidator(new GameValidator());
    }

    public void setGameOrganizer(GameOrganizer gameOrganizer) {
        this.gameOrganizer = gameOrganizer;
    }

    public void setDeveloperEditor(DeveloperConverter developerEditor) {
        this.developerEditor = developerEditor;
        developerEditor.setGameOrganizer(gameOrganizer);
    }

    public void setGameValidator(GameValidator gameValidator) {
        this.gameValidator = gameValidator;
    }


    @RequestMapping(method = RequestMethod.GET)
        private String showForm(ModelMap model) {
        return "AddGame";
    }

     @ModelAttribute("editGame")
     private Game GameformBackingObject(HttpServletRequest request) throws Exception {
        Game game = null;
        long id = ServletRequestUtils.getLongParameter(request, "id");
        if (id <= 0) {
            game = new Game();
        } else {
            game = new Game();
            game.setId(gameOrganizer.getGame(id).getId());
            game.setDevelopers(gameOrganizer.getGame(id).getDevelopers());
            game.setGameNaam(gameOrganizer.getGame(id).getGameNaam());
            game.setImages(gameOrganizer.getGame(id).getImages());
            game.setPrijs(gameOrganizer.getGame(id).getPrijs());
        }

        return game;
    }

    @RequestMapping(method = RequestMethod.POST)
    protected String doSubmitAction(@ModelAttribute("editGame") Game game, BindingResult result) throws Exception {
        gameValidator.validate(game, result);
        if (result.hasErrors()) {
            return "AddGame";
        } else {
            if (game.getId() <= 0) {
                gameOrganizer.addGame(game);
            } else {
                gameOrganizer.update(game);
            }
            return "forward:/Gamedatabase.htm";
        }

    }

    @ModelAttribute("allDevelopers")
    private Set<Developer> getDevelopers() throws Exception {
        Set<Developer> developers = gameOrganizer.getAllDevelopers();
        return developers;
    }

    @ModelAttribute("currentId")
     private long getCurrentId(HttpServletRequest request) throws ServletRequestBindingException {
        long id = ServletRequestUtils.getLongParameter(request, "id");
        return id;
    }


 }
4

1 に答える 1

1

XML 構成で Spring MVCの変換サービスを構成していないと思います。

<mvc:annotation-driven conversion-service="conversionService" />
于 2012-05-28T02:11:25.340 に答える