如何在String参数中设置ZK中的图像内容

时间:2016-03-31 06:53:43

标签: java zk

需要帮助我想在我的代码中设置来自String参数的url图像,这是我从我的数据库中的表路径得到的这里是我的.zul代码:

   <div data-u="slides" apply="id.my.berkah.web.controller.ListTopController" style="cursor: default; position: relative; top: 0px; left: 0px; width: 900px; height: 250px; overflow: hidden;">
            <div data-p="112.50" style="display: none;">
            <img data-u="image" src="ImageProgram/Tsel-Banner.jpg" />
            </div>
            <div data-p="112.50" style="display: none;">
            <img data-u="image" src="ImageProgram/Xl Baner.jpg" />
            </div>
            <div data-p="112.50" style="display: none;">
            <img data-u="image" src="ImageProgram/IndosatBnr.jpg" />
            </div>
            <div id="jssor_1" apply="id.my.berkah.web.controller.ListTopController" data-p="112.50" style="display: none;">
            <image id="bg4" data-u="image" src="" />
            </div>
            <a data-u="ad" href="http://www.jssor.com" style="display:none">Responsive Slider</a>

        </div>

这是我的控制器我正在使用import org.zkoss.zul.Image

@Wire 
Image bg4;

 @Listen("onCreate=#listTop")
    public void initWindow() throws IOException {
    AImage tempImage=null;    
    prmTrxTop par=new prmTrxTop(); 
    par.setPrmOutlet("%%");
    ReportImpl list = new ReportImpl();
    List<TopModel> result = list.selectTop(par);
    String image1=result.get(0).getImageModel1();
    bg4.setSrc(image1);
    }

但它只是给我空指针异常,我应该怎么做从我的数据库中的表路径设置src图像。

1 个答案:

答案 0 :(得分:0)

我首先发表一些意见,看看它的发展方向 最简单的解决方法就是改用MVVM。

MVVM更容易理解,无需连接和重用zul或ViewModel。

我们如何开始,首先我们改变zul:

祖尔:

<div data-u="slides" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('id.my.berkah.web.controller.ListTopController')" style="cursor: default; position: relative; top: 0px; left: 0px; width: 900px; height: 250px; overflow: hidden;">
    <div data-p="112.50" style="display: none;">
        <img data-u="image" src="ImageProgram/Tsel-Banner.jpg" />
    </div>
    <div data-p="112.50" style="display: none;">
        <img data-u="image" src="ImageProgram/Xl Baner.jpg" />
    </div>
    <div data-p="112.50" style="display: none;">
        <img data-u="image" src="ImageProgram/IndosatBnr.jpg" />
    </div>
    <div id="jssor_1" data-p="112.50" style="display: none;">
         <image id="bg4" data-u="image" src="@load(vm.myImage)" />
         <button label="change img source" onClick="@command('changeSrc') onCreate="@command('changeSrc')"/>
    </div>
    <a data-u="ad" href="http://www.jssor.com" style="display:none">Responsive Slider</a>
</div>

爪哇:

public class ListTopController {
    private String myImage;

    @Init
    public void callMeWhateverYouWant() {
        // do what you need to fetch your src.
        myImage = "";
    }

    @Command
    @NotifyChange("myImage")
    public void changeSrc() {
        //This can be added to any event.
        //you can change your image or something else, but you need to notify what's changed.
        myImage="new img src";
    }

    public String getMyImage() {
        return myImage;
    }

    //setter not needed as we use only @load.
}   

首先,如果代码中有任何错误,请告诉我,我会纠正它们 这样做的原因是我在SO上编写了代码生命,因此总是存在拼写错误。 现在我添加了一个按钮来显示如何调用该命令 你知道,只要它们存在,我就可以在我喜欢的任何事件上调用它 请注意,必须在声明viewmodel的组件范围内调用该命令。 (但这也适用于财务主任)

如果还有其他问题,请发表评论,我会澄清更多问题。

编辑:

为了用评论的问题来完成答案:

  • @bind对您无效,这是@load + @save的快捷方式。
  • 你应该检查你的吸气剂是否被召唤:
  • 是=&gt; src将不正确。
  • 否=&gt; NotifyChange不存在或设置在命令或设置器上。您可以使用BindUtils.postNotifyChange(null,null,myImage,".");来告诉绑定器重新加载属性。 (应该用这个调用getter)
  • 关于html,您使用的是zul文件还是其他文件?(应该是zul)Native html can be added in zul with native namespace.