小编Bar*_*man的帖子

JSF 2应用程序中的默认Managed Bean Scope是什么?

通常,默认范围是请求范围.我试图删除范围注释并期望bean有一个请求bean scopped行为(通过在前一页上返回一个提交的值,我记得我已经尝试过这个过去并且它工作正常)但我没有得到任何关于表达语言连接到它.那么什么是默认范围以及它为什么不是相同的行为?!

jsf

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

Outcommented Facelets代码仍调用#{bean.action()}之类的EL表达式,并在#{bean.action}上导致javax.el.PropertyNotFoundException

我的Facelet中有以下代码片段:

<h:commandLink id="cmdbtn">
    <f:ajax event="click" execute="@form"
            listener="#{screenShotBean.takeScreenshot}" />
</h:commandLink>
Run Code Online (Sandbox Code Playgroud)

它工作正常,但当我像这样取消它,

<!--        <h:commandLink id="cmdbtn"> -->
<!--            <f:ajax event="click" execute="@form" -->
<!--                    listener="#{screenShotBean.takeScreenshot}" /> -->
<!--        </h:commandLink> -->
Run Code Online (Sandbox Code Playgroud)

然后它抛出以下异常:

javax.el.PropertyNotFoundException: Property 'takeScreenshot' not found on type monstage.test.com.ScreenShotBean
    at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:237)
    at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:214)
    at javax.el.BeanELResolver.property(BeanELResolver.java:325)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:85)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
    at com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217)
    at com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157)
    at com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77)
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at …
Run Code Online (Sandbox Code Playgroud)

jsf comments facelets el propertynotfoundexception

7
推荐指数
1
解决办法
3391
查看次数

if(process.env.NODE_ENV ==='production')总是假的

尝试通过从package.json上的此脚本列表运行build命令来构建angular-webpack应用程序时:

"scripts": {
    "test": "NODE_ENV=test karma start",
    "build":  "if exist dist rd /s /q dist && mkdir dist && set NODE_ENV=production && webpack && cp app/index.html dist/index.html",
    "start": "webpack-dev-server --content-base app"
  },
Run Code Online (Sandbox Code Playgroud)

这是控制台上的结果:

$ npm run build

    > webpack-ng-egg@1.0.0 build M:\Learning webpack\egghead.io - AngularJS - Angula
    r and Webpack for Modular Applications\webpack-ng-egg
    > if exist dist rd /s /q dist && mkdir dist && set NODE_ENV='production' && webp
    ack && cp app/index.html dist/index.html

    process.env.NODE_ENV  : 'production'
    process.env.NODE_ENV === 'production' ???? …
Run Code Online (Sandbox Code Playgroud)

windows node.js angularjs webpack

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

使用jquery ajax调用jsf托管bean方法(AjaxBehaviorEvent监听器处理程序)

我想知道是否有办法通过使用jquery ajax服务器请求直接触发jsf托管bean方法(使用AjaxBehaviorEvent类型参数:使用f:ajax时触发相同).顺便说一下,ima jsf developper和我没有找到一个关于使用jquery ajax和Java EE作为服务器端框架的示例,我发现的所有示例都是php..so我希望得到一个关于这样做的完整示例.我认为另一种解决方法可能是在客户端使用jquery提交commandLink并通过该调用传递参数,但我更喜欢前一种解决方案,我希望它能正常工作.

非常感谢您的帮助!

ajax jquery jsf managed-bean

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

java.lang.IllegalStateException:在视图中已找到组件ID.发生在selectOneMenu上

在我看来,我有一个selectOneMenu如下代码所示:

   <h:panelGroup id="mysrvicenodesblock" layout="block">
     <table id="mysrvicenodestab" border="0" width="100%">
    <tr>
          <td align="center" class="underline">node Id</td>
          <td align="center" class="underline">node Name</td>
          <td align="center" class="underline">Go to node</td>                                  
          <td align="center" class="underline">Action</td>
        </tr>
      <c:forEach items="${jbpmAPIUtil.myServiceNodeToComplete}" var="msntoc">
        <tr>
          <td align="center">${msntoc.getId()}</td>
          <td align="center">${msntoc.getName()}</td>
          <td align="center">
         <h:selectOneMenu value="#{jbpmAPIUtil.procNdNameSelectedValue}" id="procnodes">
                <f:selectItem itemLabel="" itemValue="" />
                <f:selectItems value="#{jbpmAPIUtil.procnodes}" var="pn"  itemLabel="# {pn.getName()}" itemValue="#{pn.getId()}" />
<f:ajax event="change" listener="#{jbpmAPIUtil.OnONeMenuProcNdSelChgeHndler}" />
             </h:selectOneMenu>
          </td>                                     
          <td align="center">                                               
          <h:commandLink value="Complete !">
             <f:ajax event="click" listener="#{jbpmAPIUtil.Completemsn}">
             </f:ajax>                                             <f:param value="${msntoc.getWorkitemid()}" name="msntocwiid"/>
                                                 </h:commandLink>
 </td>             


     </tr>
</c:forEach>
</table>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

该组件包含在一个<h:panelGroup layout="block">定期刷新的组件上 …

jsf

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

如何以编程方式将AjaxBehavior添加到具有primefaces的UIComponent

因为我已经问过我的最后一个问题(仍然没有答案)我继续寻找解决方案,最后我发现这个话题我认为可以帮助实现我想要的.

所以,我尝试了这个解决方案(这本身就是一种解决方法),但它仍然不适用于我.

这是代码,它只是对这个问题的测试:

index.xhtml:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>dyn add comps test </title>
</h:head>
<body>
<h:form id="form1">
<!-- once this first commandLink is clisked it will generate another commandlink below it  -->
<h:commandLink value="cliick me">
<f:ajax event="click" listener="#{myBean.firstcmdLinkListenerHandler}"/>
</h:commandLink>

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

托管Bean:MyBean.java

package mybeans;

import javax.el.ExpressionFactory;
import javax.el.MethodExpression;
import javax.faces.application.Application;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlCommandLink;
import javax.faces.context.FacesContext; …
Run Code Online (Sandbox Code Playgroud)

ajax primefaces jsf-2

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

JSF,CDI和EJB容器:应该使用它们的组合?

我正在阅读这篇文章,这让我有些困惑:在那篇文章中提到了与每个特定容器一起使用的注释:JSF,CDI或EJB容器.

作为一个初学者,我学习了JSF框架并习惯了它的@ManagedBean注释及其可选的name参数,用于从JSF页面引用bean,并且对CDI知之甚少,而我正在使用EJB作为其强大的功能(甚至阅读这篇文章之后,我仍然认为EJB比CDI更强大,功能更强.

所以...... JSF和CDI容器都有自己的注释和在网页上引用bean的方法,但EJB只有@Stateless(或@Stateful),因此无法在网页上引用,这意味着JSF容器必须总是附加EJB(因为我假设混合EJB和CDI容器是荒谬的,因为它们几乎相似但是为了这一点,我希望有人告诉我,如果我错了).

JSF容器的问题在于它

"仍然没有完整和成熟的容器"

正如在那篇文章中说的那样,我知道的最糟糕的事情是在@ManagedBean旁边的Netbeans中发出警告信息:

"javax.faces.bean包中的注释将在下一个JSF版本中被删除.相反,建议使用CDI."

(好吧,这里有另一个注释的替代包:javax.annotation.ManagedBean,但我不知道我是否可以使用它,也不知道它是否有一个参数用于在网页上引用bean以及它是哪一个)

所以现在我开始怀疑未来还应该使用哪种容器组合.CDI + EJB是未来吗?

为所有人喝彩.

ejb java-ee cdi jsf-2

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

我如何通过Array.forEach方法使用的函数传递额外的参数?

我有一个数组:

var allchildsAr = new Array();
Run Code Online (Sandbox Code Playgroud)

我用一个具有parent属性(一个对象)的对象和一个chlds属性的数组填充它.

这是填充数组的代码:

Ti.API.info("*****allchildsAr["+level+"] is null and "+elmn+" children will be added to it ");
allchildsAr[level] = new Array({parent:elmn,chlds:elmn.getChildren()}); 
Run Code Online (Sandbox Code Playgroud)

以下是我在添加后尝试显示数组的方法:

  Ti.API.info("*****allchildsAr["+level+"] after add");
allchildsAr[level].forEach(logArrayJsonElements);
Run Code Online (Sandbox Code Playgroud)

logArrayJsonElements方法如下:

function logArrayElements(elemnt, indx, array) {
    Ti.API.info("*****Element at [" + indx + "]   : " + elemnt.id);
}

function logArrayJsonElements(elemnt, indx, array) {
    Ti.API.info("*****Element at [" + indx + "]   : " + elemnt.parent.id);
    elemnt.chlds.forEach(logArrayElements);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常但我想要的是传递父元素,logArrayElements所以我可以将它显示为数组显示元素的父元素(以后再用它做另外的东西..)

function logArrayElements(elemnt, indx, array, parent) { …
Run Code Online (Sandbox Code Playgroud)

javascript arrays foreach

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

无法在回调内调用 useSelector

我对 redux / 工具包很陌生。

我需要在我的 React 功能组件中使用 redux 钩子来获取数据useSelector,但是数据没有很快准备好,所以看起来useSelector首先会返回一个空数组,然后当数据准备好时,它将返回填充的数据数组。

起初,我认为 useSelector 可以是异步的,但事实并非如此。每当我正在寻找的数据的值发生变化并且这不适合我的功能需求时,Redux 都会重新渲染我的组件。在某些情况下,我不希望我的组件重新渲染(特别是当只有数据的原子部分发生变化时,奇怪的是也会重新渲染我的所有组件)。

我首先尝试的是将我的数据作为组件状态的一部分,这样我就可以决定何时更新它,我在useSelector内部调用useState它接受回调

const [data, setData] = useState(()=> useSelector(...))
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

无法在回调内调用 useSelector

有什么建议 ?

reactjs react-redux react-hooks redux-toolkit

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

Redis客户端连接到Redis远程服务器,但无法在其上读写

在DegitalOcean中,我必须管理两个服务器“ Nodeserver”和一个Redis服务器“ Redisserver”,方法是使前者上的节点/表达式应用程序可以使用后者的数据库进行连接。

为了进行本地测试,我还在“ Nodeserver”上本地安装了另一个Redis服务器“ LocalRedisOnNodeServer”。

我已将'Redisserver'配置为接受外部连接,如https://www.digitalocean.com/community/tutorials/how-to-set-up-a-redis-server-as-a-session-handler-for -php-on-ubuntu-14-04并尝试从“ LocalRedisOnNodeServer”的redis-cli连接时,我能够访问远程“ Redis_server”数据库,并且也可以通过该数据库进行读取和写入操作。

我仍然没有为“ Redis_server”配置任何安全措施(以编辑iptables ..),我只设置了一个密码(redis.conf中的requirepass),我仍然不知道是否可以使用更安全的身份验证在该服务器上使用SSH进行配置(或也为此配置我的应用程序代码)。

以下是app.js文件,其中包含Express的会话和传递给该会话的RedisStore(将Redis客户端作为args接收)。

var express = require('express');
var app = express();
var routes = require('./routes');
var errorHandlers = require('./middleware/errorhandlers');
var log = require('./middleware/log');
var partials = require('express-partials');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var bodyParser = require('body-parser');
var redis = require('redis');
var config = require('./config');

app.set('view engine', 'ejs');
app.set('view options', {defaultLayout: 'layout'});

app.use(partials());
app.use(log.logger);
app.use(express.static(__dirname + '/static'));
app.use(cookieParser(config.secret));

console.log(config.redisConf);

var redisClient …
Run Code Online (Sandbox Code Playgroud)

redis node.js express digital-ocean express-session

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