小编INE*_*ile的帖子

JSF 最佳实践:自定义组件和 JavaScript

我正在开发一个 JSF 自定义组件,使用我在以下书籍Pro JSF and HTML5 by Apress 中找到的信息。

至此,我成功开发了:

  • 获取要在组件中呈现的数据的java类
  • java组件类
  • Java 渲染器类
  • 标签库文件
  • 呈现 taglib 的示例页面

一切正常,组件已成功呈现。

现在我想向呈现的元素添加 javascript 事件和行为,更具体地说,我的自定义组件的目的是在网页上呈现菜单,我想向菜单项添加下拉效果。我知道如何用 JavaScript 编写整个代码,但我不知道的是:

将 javascript 事件和行为添加到自定义组件中呈现的元素的最佳实践是什么?

JS文件应该放在哪里?如何将事件绑定到元素?它是在渲染类中完成的,还是在网页上完成的?

谢谢,如果需要,我愿意提供有关我的代码的更多具体信息。


Java 组件类

注意: CosmoMenu 类只是一个 bean。它基本上存储一个菜单树(一个标签、一个 id 和一组子项,如果有的话)。

package components;

import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import domain.CosmoMenu;
import javax.faces.component.FacesComponent;
import javax.faces.component.UIComponentBase;


@FacesComponent(CosmoMenuComponent.COMPONENT_TYPE)
public class CosmoMenuComponent extends UIComponentBase{

  /** Component family of {@link CosmoMenuComponent}.        */
  public static final String COMPONENT_FAMILY = "CosmoMenu";

  /** Component type of {@link …
Run Code Online (Sandbox Code Playgroud)

javascript jsf taglib custom-component

5
推荐指数
1
解决办法
3626
查看次数

org.primefaces.component.menubar.MenubarRenderer.encodeSubmenuIcon中的java.lang.NullPointerException

我正在使用一个动态菜单栏.当按下命令按钮时,应更新菜单栏的内容.

这是我非常简单的xhtml页面

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>CoSMo</title>
</h:head>
<h:body>
    #{simpleMenuBacking.init()}
    <h:form>
        <p:commandButton value="Submit" action="#{simpleMenuBacking.updateModel()}" update="mb1"/>
        <p:growl id="messages" showDetail="false"/>
        <p:menubar id="mb1" model="#{simpleMenuBacking.model}" />
    </h:form> 

</h:body>
Run Code Online (Sandbox Code Playgroud)

而我的(相应简单)支持bean:

@Named
@SessionScoped
public class SimpleMenuBacking implements Serializable {

    private DefaultMenuModel model;

    public void init() {
    Logger.getLogger(UserBacking.class.getName()).info("[SimpleMenuBacking.init()] Starting.");

        model = new DefaultMenuModel();

        String myMenuEntry = "MENU ENTRY " + new Random().nextInt();
        Logger.getLogger(UserBacking.class.getName()).info(myMenuEntry);
        model.addElement(new DefaultSubMenu(myMenuEntry));
    }

    public SimpleMenuBacking() {
    }

    public DefaultMenuModel getModel() {
         Logger.getLogger(UserBacking.class.getName()).info("[SimpleMenuBacking.getModel()] Starting.");
        return model;
    }

    public void updateModel() {

        Logger.getLogger(UserBacking.class.getName()).info("[SimpleMenuBacking.updateModel()] Starting.");

        String …
Run Code Online (Sandbox Code Playgroud)

jsf menubar primefaces commandbutton

5
推荐指数
1
解决办法
2730
查看次数

Visual Studio 2012 XAML设计器-无法添加多个项目

我是VS 2012的新手,每次使用XAML Designer时都会遇到此问题。

每次我向窗口添加一个项目(例如RadioButton和Image,Label)时,它都会删除前一个。

结果,我的窗口中只能有一个项目,我知道这是荒谬的,我缺少什么?

这是窗口的xaml

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WpfViewers="clr-namespace:Microsoft.Samples.Kinect.WpfViewers;assembly=Microsoft.Samples.Kinect.WpfViewers" xmlns:Toolkit="clr-namespace:Microsoft.Kinect.Toolkit;assembly=Microsoft.Kinect.Toolkit" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="KinectSetupDev.MainWindow"
    Title="MainWindow" Height="400" Width="600">
    <Toolkit:KinectSensorChooserUI x:Name="SensorChooserUI" VerticalAlignment="Center" Height="40" Margin="277,2,275,328"/>
</Window>
Run Code Online (Sandbox Code Playgroud)

这是在窗口上拖动图像后的xaml(从工具箱)

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:WpfViewers="clr-namespace:Microsoft.Samples.Kinect.WpfViewers;assembly=Microsoft.Samples.Kinect.WpfViewers" xmlns:Toolkit="clr-namespace:Microsoft.Kinect.Toolkit;assembly=Microsoft.Kinect.Toolkit" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="KinectSetupDev.MainWindow"
    Title="MainWindow" Height="400" Width="600">
<Image HorizontalAlignment="Left" Height="86" Margin="77,188,0,0" VerticalAlignment="Top" Width="111"/>
</Window>
Run Code Online (Sandbox Code Playgroud)

wpf xaml

4
推荐指数
1
解决办法
2007
查看次数

如何检查一系列数字在C++中是否有增加/减少的趋势

检查一系列数字是否有增加或减少趋势的最佳方法是什么?

我知道我可以选择序列的第一个和最后一个值,并检查它们的区别,但我想要一个更强大的检查.这意味着我希望能够在大多数递减的序列中容忍少数增加的值,反之亦然.

更具体地说,数字存储为

vector<int> mySequence;
Run Code Online (Sandbox Code Playgroud)

关于我正在处理的数字序列的更多细节:

  • 序列中的所有数字具有相同的数量级.这意味着不会出现如下序列:[45 38 320 22 12 6].
  • 通过下降趋势,我的意思是序列中的大多数或所有数字都小于前一个.(相反的情况适用于上升趋势).因此,以下顺序被视为下降:[ 45 42 38 32 28 34 26 20 12 8 48]

c++ int vector trend

4
推荐指数
1
解决办法
1万
查看次数

使用JavaCV API访问Mat的像素值

我最近从OpenCV C++ API切换到JavaCV,我正在尝试执行基本操作,例如迭代Mat.我正在尝试访问Mat的像素值,但我似乎无法找到方法,而JavaCV项目缺少文档.使用OpenCV C++ API,我曾经使用该.at()方法访问Mat的像素值.

Mat加载为CV_8UC1 Mat(灰度),如下面的代码所示,我想打印/使用像素的0-255值.

    Mat image = imread("images/Text00.png", CV_8UC1);

    // Make sure it was successfully loaded.
    if (image == null) {
        System.out.println("Image not found!");
        System.exit(1);
    }

    System.out.println(image.rows());
    System.out.println(image.cols());

    for (int y = 0; y < image.rows(); y++) {

        for (int x = 0; x < image.cols(); x++) {

            // How to print the 0 to 255 value of each pixel in the Mat image.
        }
    }
Run Code Online (Sandbox Code Playgroud)

类似但不适用的答案:

java opencv javacv mat

4
推荐指数
1
解决办法
3892
查看次数

OS X Lion上的32位OpenCV?可能?

我一直在谷歌搜索并尝试几天,试图弄清楚如何让32位OpenCV在OS X Lion上运行,但可以找到64位版本.

所以我有以下问题:

OpenCV库有32位还是64位,这是正确的吗?

如何在Lion上使用32位OpenCV?我尝试了以下方法: - 通过MacPorts安装OpenCV:nope,MacPorts安装64位版本.BI删除了OpenCV和MacPorts.

  • 使用以下命令通过Homebrew安装OpenCV 2.4.1:

brew install opencv --build32

但看起来他们也是64位.删除了OpenCV和Homebrew.

  • 使用标准的unix makefile自行安装OpenCV 2.4.1.不,他们看起来仍然像64位.

我写过"它们看起来像64位",因为我必须在OS X Snow Leopard下制作的Xcode项目中取代OpenC,针对32位Mac,我总是遇到很多错误:

ld:警告:忽略文件/usr/local/Cellar/opencv/2.4.1/lib/libopencv_calib3d.2.4.1.dylib,文件是为不支持的文件格式构建的,而不是被链接的体系结构(i386)

所以我认为OpenCV的东西是64位的.如果我强制项目以64位运行,它会摩擦但不能正常工作并卡住.

有没有标准的方法来检查我的OpenCV库是64位还是32位?

我在哪里可以获得32位OpenCV?

c++ opencv 32bit-64bit xcode4 osx-lion

3
推荐指数
1
解决办法
3259
查看次数

Kinect SDK 1.6和Joint.ScaleTo方法

我正在使用Kinect SDK 1.6,我正在关注Windows Kinect Quickstart系列Skeleton Tracking Funamentals教程,可在此处获得.

即使这些教程是针对SDK 1.0制作的,所有内容都很顺利,直到我按照说明将手的位置映射到自定义大小的窗口(例如1280x720).

Dan Fernandez正在使用以下代码行来实现这一目标

    private void ScalePosition(FrameworkElement element, Joint joint)
    {
        // Convert the value to X/Y;
        Joint scaledJoint = joint.ScaleTo(1280, 720);

        ....
    }    
Run Code Online (Sandbox Code Playgroud)

好吧,该方法ScaleTo不是自定义函数,它应该在Kinect SDK中提供,但根据我的编辑器,没有这样的方法.我无法找到它,我认为它可能已被移动/重命名/自SDK 1.0以来的任何东西.

只是为了确保一切都井然有序,这里是我的using清单,其他人(骷髅跟踪等)正在工作,所以我真的无法搞清楚

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

using …
Run Code Online (Sandbox Code Playgroud)

wpf kinect kinect-sdk

2
推荐指数
2
解决办法
2830
查看次数